我用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消息只报告了一项,那就是我单击的元素的文本。那么为什么设置背景色会有不同的效果呢?
暂无答案!
目前还没有任何答案,快来回答吧!