ramesh
ramesh

Reputation: 4082

Android set click event for dynamically created lists

One of my android learning project I am creating a list view from a dynamic json object. Its creating view perfectly. The following is my code

final ListView lv = (ListView) findViewById(R.id.listView1);
    String json = "[{\"name\":\"Name 1\",\"number\":\"num 1\"},{\"name\":\"Name 2\",\"number\":\"num 1\"}]";


try {
    JSONArray array = (JSONArray) new JSONTokener(json).nextValue();

    String[] stringarray = new String[array.length()];
    for (int i = 0; i < array.length(); i++) {
        stringarray[i] = array.getJSONObject(i).getString("name");
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stringarray); 
    lv.setAdapter(adapter);
    } catch (JSONException e) {
    // handle JSON parsing exceptions...
        e.printStackTrace();
    }

Now I am trying to add a click event for each list and also need to show an another activity and show only this list's contents. I didn't have any idea how to do this.

Can anyone please help me ? Thanks in advance

UPDATE

final ListView lv = (ListView) findViewById(R.id.listView1);
        String json = "[{\"name\":\"Name 1\",\"number\":\"num 1\"},{\"name\":\"Name 2\",\"number\":\"num 1\"}]";
        try {
            JSONArray array = (JSONArray) new JSONTokener(json).nextValue();

            String[] stringarray = new String[array.length()];
            for (int i = 0; i < array.length(); i++) {
                stringarray[i] = array.getJSONObject(i).getString("name");
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stringarray); 
            lv.setAdapter(adapter);

            adapter.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    // Start a indent to start new activity and store necessary information hhere
                }

            });

            } catch (JSONException e) {
            // handle JSON parsing exceptions...
                e.printStackTrace();
            }

Upvotes: 0

Views: 1146

Answers (2)

Pragnani
Pragnani

Reputation: 20155

Try setting onItemClick Listener for the listview like this

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        String text=arg0.getItemAtPosition(arg2);
        Intent i=new Intent(context, secondActiviy.class);
        i.putExtra("name", text);
        startActivity(i);
    }
});

And in your Activity get the Extra like this

String name=getIntent().getExtras().getString("name");

show this text in the textview

Upvotes: 0

songyy
songyy

Reputation: 4563

lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // Use an indent to start new activity and store necessary information in the indent
    }

});

On How to start an activity using indent, check this

Upvotes: 2

Related Questions