0

监听代码:

    lvSearch.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> adapter, View view, int position,
                long id) {
            LinearLayout ll = (LinearLayout) adapter.getChildAt(position);
            TextView tx = (TextView) ll.getChildAt(0);
            TextView tx1 = (TextView) ll.getChildAt(1);
            Log.i("abcValues", tx.getText().toString());

我有一段NullPointerException时间访问 a 的项目值ListView。它适用于启动项目值,但不适用于滚动后出现的项目。

4

2 回答 2

1

getChildAt返回可见行,当您滚动LisView并单击行时,您将为getChildAt无效位置调用该方法(该方法可以使用的最大数量getChildAt是可见行数 - 1)。如果您想要单击行的布局中的父级,只需arg1在代码中使用第二个参数:

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
      LinearLayout ll = (LinearLayout) arg1;
      TextView tx = (TextView) ll.getChildAt(0);
      TextView tx1 = (TextView) ll.getChildAt(1);
      Log.i("abcValues", tx.getText().toString());
于 2012-05-06T16:05:23.677 回答
0

我不认为你可以那样做。尝试从传入的视图中备份:

  LinearLayout row = (LinearLayout) arg1.getParent(); 
  TextView tx = (TextView) row.findViewById(R.id.tx_id_here);
  TextView tx1 = (TextView) row.findViewById(R.id.tx1_id_here);
于 2012-05-06T16:14:24.520 回答