0

我正在使用 Listview 在屏幕上的两个 TextView 中显示来自 Cursor 的三列信息。左边的 TextView 是静态的,而右边的 TextView 有两种语言的翻译,在选择时会切换。

我的问题是,在我滚动 ListView 之前,这工作正常,此时适配器和 ListView 似乎变得不同步,导致片状行为,最后出现空指针异常。

这是 onListItemClick 代码:

 public void onListItemClick(ListView l, View v, int position, long id){
    //first revert previous selection to English
    if(previous_position!=99){
      View vo =l.getChildAt(previous_position);
      TextView pt = (TextView)vo.findViewById(R.id.english);
      pt.setTextColor(Color.BLUE);
      pt.setText(previous_text);
    }

    //now show current selection in Hindi
    TextView t = (TextView) v.findViewById(R.id.translation);
    t.setTextColor(Color.RED);
    t.setText(gloCursor.getString(3));

    //finally remember where we changed things so we can revert them
    previous_position = position;
    previous_text = gloCursor.getString(3);

    // adapter data notification
    //adapter.notifyDataSetChanged();
    }

我已经注释掉了 notifyDataStateChanged 因为在这种情况下它对我不起作用。

将不胜感激任何见解,或者可能为此提供更好的设计。

谢谢,P。

4

1 回答 1

0

尝试将您的getChildAt代码替换为:

View vo = l.getChildAt(previous_position - l.getFirstVisiblePosition());
于 2012-12-17T19:45:11.913 回答