android listview getchild()工作不正常

6l7fqoea  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(235)

我用arrayadapter创建了一个简单的android列表视图,如下所示

ListView lView;

ArrayList<String> listItems;

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lView = findViewById(R.id.mainListView);

        listItems = new ArrayList<>();
        updateView(42);

        lView.setOnItemClickListener(new OnItemClickListener(){

                @Override
                public void onItemClick(AdapterView<?> p1, View p2, int p3, long p4)
                {
                    View v = lView.getChildAt(p3 - lView.getFirstVisiblePosition());

                    v.setBackgroundColor(R.color.blue);  //ERROR , It changes the background color yea but also changes other ListView child's background
                }

        });

        ArrayAdapter arrayAdapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1, android.R.id.text1,listItems);
        lView.setAdapter(arrayAdapter);
    }

    void updateView(int x){
        for(int i = 0; i<x; i++){
            listItems.add("Dolapo");
            listItems.add("mab");
            listItems.add("jnr");
        }
    }
}

正如我在上面的评论中添加的,更改一个子视图的背景色也会更改其他一些视图。
在试图找出错误的过程中,我在onitemclick方法中添加了下面的代码行

TextView txt = (TextView) v;

Toast.makeText(getApplicationContext(),txt.getText(),0).show();

令我惊讶的是,toast消息只报告了一项,那就是我单击的元素的文本。那么为什么设置背景色会有不同的效果呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题