2013-05-07 48 views
0

我的一个Android学习项目我从动态json对象创建列表视图。它的创造观点完美。下面是我的代码Android设置点击事件动态创建列表

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(); 
    } 

现在我想添加一个click事件每个列表,也需要表现出一个又一个活动,只能说明这个列表中的内容。我没有任何想法如何做到这一点。

任何人都可以帮我吗? 在此先感谢

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(); 
      } 

回答

0

尝试设置onItemClick监听器为ListView这样

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); 
    } 
}); 

而且在你的活动中获得像这样的额外

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

显示这个文本中的TextView

+0

嗨感谢您的答复..我的代码更新..是现在的代码? – ramesh 2013-05-07 09:30:23

+0

为'listview'设置onClick Listener不适用于适配器,即为您的'lv' – Pragnani 2013-05-07 09:31:15

2
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 
    } 

}); 

有关如何使用缩进开始活动,check this

+0

代码更新..是代码的权利吗? – ramesh 2013-05-07 09:28:08

+1

onItemClick监听器是用于listview不适用于适配器 – Pragnani 2013-05-07 09:31:56

+0

对不起,我的坏。 @Pragnani是正确的,请参考:http://developer.android.com/reference/android/widget/ListView.html – songyy 2013-05-07 09:37:32