0

I have a list view in Main activity, I have fill some values in it by using Array Adapter

String[] arr = new String[]{"Android ListView Item 1", "Android ListView Item 2",
        "Simple List View In Android", "List View onClick Event","Android List View OnItemClickListener",
        "Open New Activity When ListView item Clicked", "List View onClick Source Code", "List View Array Adapter Item Click",
};

Now I want to set onclickListener to each item of the list. I am requesting an api which gives me jsonresponse and I want to iterate over jsonresponse and send required data to another activity when click item of the list.

I tried with following:

ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this, 
R.layout.activity_main2, R.id.textview, arr);

    listview.setAdapter(arrayadapter);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            String textToPass = "hello";
            if (position == 0) {
                Bundle passData = new Bundle();
                passData.putString("data",textToPass);
                Intent myIntent = new Intent(view.getContext(), Main2Activity.class);

                myIntent.putExtras(passData);
                startActivity(myIntent);
              }
         }
    });
}

private String jsonParse(){

    String url = "//testing/api.php"; //get json response locally
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            JSONArray jsonArray = null;
            try {
                jsonArray = response.getJSONArray("Item");

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

                    HashMap<String,String> dict = new HashMap<String,String>();

                    JSONObject tv = jsonArray.getJSONObject(i);
                    String sid;

                    dict.put("cid", tv.getString("sid") );

                   // String cid = tv.getString("sid");
                    String categoryName =tv.getString("category_name");
                    String baseUrl = "//testing/";
                    String imageUrl = baseUrl + tv.getString("category_image");


                    //textView.append(cid + "," + categoryName + "," + imageUrl + "\n\n");

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
            assert jsonArray != null;
            Log.d("Main",jsonArray.toString());

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(error.getMessage(), "utf-8");
        }
    });



    requestQueue.add(jsonObjectRequest);

Please help

Pradeep
  • 475
  • 1
  • 4
  • 18

1 Answers1

1

If I understood properly then I think you want to send HashMap dic to another activity. HashMap are serializable this means you can easily pass it in intent, moreover both key and value are string which are also serializable

intent.putExtra("dic.key", dic);

And in your next activity retrieve it with typecasting.. simple

HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");
Abubakar
  • 1,022
  • 10
  • 20