从listview中的每一行获取单击按钮

时间:2012-04-13 02:39:12

标签: android listview hashmap

我生成了ListView,如下所示

我没有足够的代表发布图片,您必须解密我的网址:image

上面图片中的 blue 行使用HashMap填充:

private void showListView(JSONArray rows, JSONArray totals){

final ListView list = (ListView) findViewById(R.id.historylist);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
String[] titles = new String[]{"recordID","date","description","num1","num2"};
SimpleAdapter mSchedule = null;

try{

    for(int i=0;i<rows.length();i++){
        map = new HashMap<String, String>();
        for(int n=0;n<allRows.getJSONArray(i).length();n++){
            map.put(titles[n], allRows.getJSONArray(i).getString(n));
        }
        mylist.add(map);
    }

    mSchedule = new SimpleAdapter(
        History.this,
        mylist,
        R.layout.history_row,
        titles,
        new int[] {R.id.textView0, R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4}
    );

    list.setAdapter(mSchedule);

}catch(Exception e){
    Log.e("Creating ListView", e.toString());
}

}

<LinearLayout >

<LinearLayout >
    <LinearLayout >
        <TextView (recordID) />
        <TextView (date) />
        <TextView (num1) />
        <TextView (num2) />
    </LinearLayout>
    <TextView (description) />
</LinearLayout>

<LinearLayout (When this one is clicked) >
    <ImageView />
</LinearLayout>

单击上图中的绿色按钮时,Id喜欢获取蓝色行信息。

  

(日期,描述,num1,num2)

此外,如果您认为有更好的方式来填充ListView,请告知我们。

1 个答案:

答案 0 :(得分:0)

您需要通过扩展BaseAdapter来实现自己的自定义适配器。在getView方法中,您需要绑定到Button的点击事件。我建议使用OnClickListener并使用AdapterView#getPositionForView的一个实例。一旦您拥有了点击按钮的视图位置,您就可以获得数据。可以通过Adapter#getItem或直接从您的数据源。