在Android中以编程方式自定义行项目的更改文本和背景颜色

时间:2013-06-09 16:56:16

标签: android listview

我已经将适配器填入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中滚动(使用自定义适配器)时阻止加载数据,或者如何在首次运行时将适配器填充到所有行中。

1 个答案:

答案 0 :(得分: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...
  }

关于第二种方式的说明:

    某些adapterViews上的
  • 第二种方式可能无法正常工作。

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