Android ListView FindViewById 混乱
Android ListView FindViewById confusion
我有一个带有以下适配器的列表视图
SimpleAdapter simpleAdapter
= new SimpleAdapter(NewsListActivity.this,res,R.layout.newslist_adapter,new String[]{"title","description","link"},new int[]{R.id.title,R.id.description,R.id.url});
lView.setAdapter(simpleAdapter);
其中lView是ListView,res是HashMap。
在 ListView 的 onItemClick 中,我能够使用下面的代码获取每个视图的描述 TextView
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
View v1 = lView.getChildAt(position - lView.getFirstVisiblePosition());
if(v1 != null){
TextView des = v1.findViewById(R.id.description);
Toast.makeText(getApplicationContext(),des.getText(),0).show(); // returns the Text at exact TextView Clicked
des.setBackgroundColor(R.color.red); //Here is the PROBLEM, It changes the Background Color of TextView I clicked on, but it ALSO changes some other TextView's background color
}
}
正如我在评论中添加的那样,Toast 消息 returns TextView 中的确切文本,但更改背景颜色也会更改 ListView 颜色中的其他一些 TextView
我似乎不明白我做错了什么。
编辑
我只发布了项目的一部分,以免我的源代码弄乱了所有地方。
这是一个 RSS 提要 reader 项目,但现在我意识到问题出在所有 ListView 上。很高兴为下面的 link
提供帮助
Android ListView getChild() not working properly
好吧,经过几个月的困惑、自学的痛苦和独自行走的惩罚(无法直接获得高级开发人员的帮助),我终于意识到我错过了什么。
问题源于 ListView 将视图重新用作某种内存管理技术(出于性能目的)等。这就是为什么在我的例子中,每当 ListView 元素的背景颜色发生变化并且视图被回收时,它都会影响使用回收视图的任何项目的背景颜色。
至于修复,这个 this link 应该有帮助
我有一个带有以下适配器的列表视图
SimpleAdapter simpleAdapter
= new SimpleAdapter(NewsListActivity.this,res,R.layout.newslist_adapter,new String[]{"title","description","link"},new int[]{R.id.title,R.id.description,R.id.url});
lView.setAdapter(simpleAdapter);
其中lView是ListView,res是HashMap。
在 ListView 的 onItemClick 中,我能够使用下面的代码获取每个视图的描述 TextView
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
View v1 = lView.getChildAt(position - lView.getFirstVisiblePosition());
if(v1 != null){
TextView des = v1.findViewById(R.id.description);
Toast.makeText(getApplicationContext(),des.getText(),0).show(); // returns the Text at exact TextView Clicked
des.setBackgroundColor(R.color.red); //Here is the PROBLEM, It changes the Background Color of TextView I clicked on, but it ALSO changes some other TextView's background color
}
}
正如我在评论中添加的那样,Toast 消息 returns TextView 中的确切文本,但更改背景颜色也会更改 ListView 颜色中的其他一些 TextView
我似乎不明白我做错了什么。
编辑
我只发布了项目的一部分,以免我的源代码弄乱了所有地方。
这是一个 RSS 提要 reader 项目,但现在我意识到问题出在所有 ListView 上。很高兴为下面的 link
提供帮助Android ListView getChild() not working properly
好吧,经过几个月的困惑、自学的痛苦和独自行走的惩罚(无法直接获得高级开发人员的帮助),我终于意识到我错过了什么。
问题源于 ListView 将视图重新用作某种内存管理技术(出于性能目的)等。这就是为什么在我的例子中,每当 ListView 元素的背景颜色发生变化并且视图被回收时,它都会影响使用回收视图的任何项目的背景颜色。
至于修复,这个 this link 应该有帮助