0

我在 ListFragment 中有一个带有 SimpleCursorAdapter 的列表视图。该项目是 CheckedTextView。它工作得很好。现在我尝试用FragmentPagerAdapter把ListFragment放到一个pageview中,这样这个fragment就可以成为可以响应手势的tab之一。
但是,它的行为很奇怪。当我单击一次检查一个项目,然后向下滚动页面(列表很长),然后检查了几个项目,而不仅仅是一个。我想知道为什么它会这样。我注意到的另一件事是,如果我不添加

((CheckedTextView)v).toggle();

onListItemClick方法中,然后单击不会在项目上设置复选标记。如果没有综合浏览量,我不必这样做。当我将此 ListFragment 放入 Pageview 时,您能帮我弄清楚为什么行为会发生变化吗?

        public void onListItemClick(ListView lv, View v, int position, long id) {


        ((CheckedTextView)v).toggle();
         lv.getCheckedItemCount();
         ...
         }

}
4

1 回答 1

0

听起来您只是按原样使用 SimpleCursorAdapter,而不是对其进行子类化以覆盖 bindView()。由于列表视图回收了视图,因此也回收了 CheckedTextView,它可能正在回收可能已经设置的现有 CheckedTextView。

尝试继承和覆盖 bindView() (或者如果你已经覆盖它)来设置检查状态。像这样的东西:

public class MyAdapter extends SimpleCursorAdapter {

  @Override
  public void bindView( View v, Context context, Cursor c) {
     super.bindView(v,context,c);

     CheckedTextView ctv = (CheckedTextView)findViewById(R.id.check_text_view); // or whatever the id is
     ctv.setChecked( c.getInt(COLUMN_NUMBER) == 1 );

  }
}
于 2014-02-03T06:26:05.560 回答