在listview监听中设置后
item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
item_text.setTextColor(Color.YELLOW);
发现点击后textview变色的文字会随着列表滑动 任意分配位置 求解决
在类中声明一个成员
private List clickedItems = new ArrayList<>();
在listview的listener中,当item被点击了,把item所 在的position加入到clickedItem中
clickedItems.add(position);
//在getView中
getView(....){
//...
item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
if(clickedItems.contains(position)){
item_text.setTextColor(Color.YELLOW);
}else{
item_text.setTextColor(Color.BLACK);
}
}
//...}
以上是大概的思路。
这是因为你的view重用了问题;
ListView中view是循环利用的。
在ListView对应的getView()中,需要将item_text的颜色改为正常(未点击时)的颜色。
如下所示:
getView(....){
//...
item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
item_text.setTextColor(//此处为未点击时的颜色);
//...}
点击的时候还是你之前的demo没关系,只不过需要记录lastpositin=Position;
记录点击的的Position位置
if(Position==lastpositin){
}else{
}
这是一个变化的情况