2

I have create simple json data pass user first name and last name but i have display only one record but i have put intent in for loop this time multiple activity create and above for loop put intent this time display only one create. And List size is database table value size.
Like this

FirstName LastName

Android corejava

Android corejava

Android corejava

Android corejava


**My Json Activity **

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fn = (EditText) findViewById(R.id.fn);
    ln = (EditText) findViewById(R.id.ln);
    insert = (Button) findViewById(R.id.insert1);
    show = (Button) findViewById(R.id.button2);

    requestQueue = Volley.newRequestQueue(getApplicationContext());

    show.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            class GetDataJSON extends AsyncTask<String, Void, String> {

                @Override
                protected String doInBackground(String... params) {

                    DefaultHttpClient httpclient = new DefaultHttpClient(
                            new BasicHttpParams());

                    HttpPost httppost = new HttpPost(
                            "http://192.168.2.5/Demo/lgin.php");

                    httppost.setHeader("Content-type", "application/json");
                    InputStream inputStream = null;
                    String result = null;
                    try {
                        HttpResponse response = httpclient
                                .execute(httppost);
                        HttpEntity entity = response.getEntity();
                        inputStream = entity.getContent();

                        BufferedReader reader = new BufferedReader(
                                new InputStreamReader(inputStream, "UTF-8"),
                                8);

                        StringBuilder sb = new StringBuilder();
                        String line = null;
                        while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");
                        }
                        result = sb.toString();

                    } catch (Exception e) {
                    } finally {
                        try {
                            if (inputStream != null)
                                inputStream.close();
                        } catch (Exception squish) {

                        }
                    }
                    return result;
                }

                @Override
                protected void onPostExecute(String result) { 
                    JSONObject jsonObj = null;
                    JSONArray jArray = null;
                    ArrayList<Model> data = new ArrayList<>();
                    try {
                        jsonObj = new JSONObject(result);
                        jArray = jsonObj.getJSONArray("userdetail");

                        Model model = new Model();

                        for (int i = 0; i < jArray.length(); i++) {

                            JSONObject jObject = null;
                            jObject = jArray.getJSONObject(i);


                            model.setName(jObject.getString("user"));
                            model.setLastname(jObject.getString("pass"));


                            Log.d(getClass().getName(), "User = " + model.getName() + "Pas = " + model.getLastname());

                            data.add(model);

                        }
                        Intent intent = new Intent(getApplicationContext(), ViewData.class);
                        intent.putExtra("data",new Gson().toJson(data));
                        startActivity(intent);

                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }
            }
            GetDataJSON g = new GetDataJSON();
            g.execute();

        }
    });


    insert.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub
            StringRequest request = new StringRequest(Request.Method.POST, insertURl, new Response.Listener<String>() {

                @Override
                public void onResponse(String arg0) {
                    // TODO Auto-generated method stub

                }

            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub

                }
            }) {
                @Override
                protected Map<String, String> getParams()
                        throws AuthFailureError {
                    // TODO Auto-generated method stub
                    Map<String, String> parameters = new HashMap<String, String>();
                    parameters.put("user", fn.getText().toString());
                    parameters.put("pass", ln.getText().toString());
                    Log.d(getClass().getName(), "View =" + fn.getText().toString() + "LastNAme = " + ln.getText().toString());
                    return parameters;

                }
            };
            requestQueue.add(request);
        }
    });

}

My Recyclerview Class

public class ViewData extends Activity {
private AdapterFish mAdapter;
private List<Model> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.container_fish);

    String dataString = getIntent().getStringExtra("data");
    ArrayList<Model> list = new Gson().fromJson(dataString, new TypeToken<ArrayList<Model>>() {
    }.getType());
    mAdapter = new AdapterFish(ViewData.this, (ArrayList<Model>) list);
    RecyclerView mRVFishPrice = (RecyclerView) findViewById(R.id.fishPriceList);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    mRVFishPrice.setLayoutManager(mLayoutManager);
    mRVFishPrice.setAdapter(mAdapter);
}

Adapter

public class AdapterFish extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private Context context;
private LayoutInflater inflater;
ArrayList<Model> data;
Model current;
int currentPos = 0;

// create constructor to innitilize context and data sent from MainActivity
public AdapterFish(Context context, ArrayList<Model> data) {
    this.context = context;
    inflater = LayoutInflater.from(context);
    this.data = data;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.customlayout, parent, false);
    MyHolder holder = new MyHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    MyHolder myHolder = (MyHolder) holder;
    Model model = data.get(position);
    myHolder.tvFirstName.setText(model.getName());
    myHolder.tvLastName.setText(model.getLastname());
}

@Override
public int getItemCount() {
    return data.size();
}

class MyHolder extends RecyclerView.ViewHolder {

    TextView tvFirstName;
    TextView tvLastName;


    // create constructor to get widget reference
    public MyHolder(View itemView) {
        super(itemView);
        tvFirstName = (TextView) itemView.findViewById(R.id.tvFirstName);
        tvLastName = (TextView) itemView.findViewById(R.id.tvLastName);
    }

}

}

Joy
  • 289
  • 1
  • 15

3 Answers3

0

Convert your Array List into String using Gson and then pass it into Intent.

    Intent intent = new Intent(getApplicationContext(), ViewData.class);
    intent.putExtra("data",new Gson().toJson(data));
    startActivity(intent)

Convert string back to list

    String dataString = getIntent().getStringExtra("data") ;
    ArrayList<Model> list = new Gson().fromJson(dataString ,new TypeToken<ArrayList<Model>>(){}.getType());

In Gradle

    compile 'com.google.code.gson:gson:2.7'
Saurabh Padwekar
  • 3,888
  • 1
  • 31
  • 37
  • I have put this code but java.lang.NullPointerException at com.example.post.AdapterFish.getItemCount how to solve it @Saurabh Padwekar – Joy Dec 18 '16 at 18:13
  • This method data is display but display only last data in database this error how to solve?@Saurabh Padwekar – Joy Dec 18 '16 at 18:18
  • java.lang.NullPointerException error is solve but This method data is display but display only last data in database this error how to solve? – Joy Dec 18 '16 at 18:23
  • check the list size if it has all the data. – Saurabh Padwekar Dec 18 '16 at 18:23
  • check in your adapter the getItemCount should be list.size() – Saurabh Padwekar Dec 18 '16 at 18:33
  • list size is 5 but all value is same how could possible my database value is different. – Joy Dec 18 '16 at 18:36
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/130896/discussion-between-user6829548-and-saurabh-padwekar). – Joy Dec 18 '16 at 18:44
0

If you are getting your data in Your Log Cat then pass your ArrayList using following approach.

Intent intent = new Intent(YourCurrentActivity.this, ViewData.class);
        intent.putStringArrayListExtra("data", data);
        startActivity(intent);

In your ViewData Activity you need to do

ArrayList<Model> list = new ArrayList<>();
 list = getIntent().getStringArrayListExtra("data");

Pass list ti the your RecyclerView Adapter Class

mAdapter = new AdapterFish(ViewData.this, (ArrayList<Model>) list);
Saurabh Bhandari
  • 2,438
  • 4
  • 26
  • 33
  • Not Possible are you try this In my case i have send data using model class so i have no used putStringArrayListExtra – Joy Dec 19 '16 at 15:46
0

Try this:

 Model model ;

                        for (int i = 0; i < jArray.length(); i++) {
                            model = new Model();
                            JSONObject jObject = null;
                            jObject = jArray.getJSONObject(i);


                            model.setName(jObject.getString("user"));
                            model.setLastname(jObject.getString("pass"));


                            Log.d(getClass().getName(), "User = " + model.getName() + "Pas = " + model.getLastname());

                            data.add(model);

                        }

or

 Gson gson = new Gson();
                data = gson.fromJson(response.toString(), new TypeToken<ArrayList<Model>>() {
                }.getType());
Avinash kumawat
  • 475
  • 6
  • 18
  • I have Already add this in my code plz check my qu?@Avinash kumawat – Joy Dec 19 '16 at 15:51
  • nothing is wrong with your code but a small fix in your Json activity, initialise your model class in your for loop not outside the loop. and Can you plz share the custom_layout.xml? – Avinash kumawat Dec 20 '16 at 06:36