0

我已经填充了适配器Listview,它工作正常。

我的问题是如何在选中时更改特定行项(使用 TextView)中的文本和背景颜色。

        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            int visiblePosition = listView1.getFirstVisiblePosition();
            View view = (View)listView1.getChildAt(position);
.....
    });

但它也不起作用。

顺便说一下,请告诉我如何防止在 Listview 中滚动时加载数据(使用自定义适配器)或如何在第一次运行时将适配器填充到所有行中。

4

1 回答 1

1

它不起作用,因为每次滚动时都会重新使用列表视图的子项。

您应该更新数据并调用notifyDataSetChanged,或者更新数据并使用类似的东西:

int visiblePosition = mListView.getFirstVisiblePosition();
View view = mListView.getChildAt(position - visiblePosition);
if(view!=null)
  {
  // update the view to have a different background and other stuff...
  }

关于第二种方式的注意事项:

  • 在某些适配器视图上,第二种方式可能无法按预期工作。

  • 我不确定更改视图大小时会发生什么。

于 2013-06-09T17:02:43.670 回答