我有一个列表视图,其中填充了自定义行。每行都有一些数据和一个圆形图像,点击它就会变成绿色。我基本上想要复制“读取”状态,如“如果圆形图像变为绿色则读取此信息”。我使用了基础适配器来显示屏幕上的视图。我已设法将颜色更改为绿色。
if(messagealertAdapterObject.status!=null &&
messagealertAdapterObject.equals("read")) {
select.setImageResource(R.drawable.greencircle);
}else{
select.setImageResource(R.drawable.gray);
}
但我的问题是,如果我在滚动列表后选择特定行后颜色已变为绿色,则当所选图像退出视图时会返回“未读”状态,如颜色为no一旦它消失了,它就会保持绿色。
是否有一些方法可以让颜色保持绿色,即使“圆圈”离开视图?
答案 0 :(得分:1)
答案 1 :(得分:0)
I have understand your problem.
你需要维护一个布尔arraylist并需要保存那个状态中的所有状态。无论何时滚动列表视图,它都会重新创建其视图,因此您需要保存视图状态。我举一个例子,我认为它会对你有帮助。
//maintain a listview in your custom adapter:
private ArrayList<Boolean> itemRead = null;
//initialize it in your custom adapter constructor:
for (int i=0; i < no_of_elements.size(); i++)
{
itemRead.add(i, false);
}
在你的getView中编写这段代码:
public View getView (int position, View convertView, ViewGroup parent)
{
//WRITE YOUR CODE
if (itemRead.get(position) == true)
{
//SET YOUR ALREADY READ IMAGE
} else {
// SET UNREAD IMAGE
}
}
每当有人阅读一行时,只需将您的状态保存在itemRead.add(row_position,true)
这将解决您的问题,因为每次重新创建视图时,它都会采取保存状态并根据该状态设置您的图像。 希望它能起作用..