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 应该有帮助