0

我生成了ListView如下所示

我没有足够的代表来发布图片,你必须破译我的网址:图片

上图中的蓝色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>

单击上图中的绿色按钮时,我想获取蓝色行信息。

(日期,描述,num1,num2)

另外,如果您认为有更好的方法来填充ListView,请告诉我。

4

1 回答 1

0

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

于 2012-04-13T05:13:52.760 回答