I have Drag Sort Listview https://github.com/bauerca/drag-sort-listview与以下项目。
1) 文本视图
2)两个按钮(ON和OFF,一次只有一个按钮可见)
关闭状态的图像 http://postimg.org/image/xbo47xghv/.
ON 状态的图像 http://postimg.org/image/g3a55icph/.
我的问题是,当用户单击“打开”并滚动列表视图并返回到该项目时,它不会更改为“打开”。
我试过 :
public class Item {
public String title;
boolean selected = false;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
getView() 方法内部:
public View getView(final int position, View convertView,
ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if (v != convertView && v != null) {
ViewHolder holder = new ViewHolder();
TextView tv = (TextView) v.findViewById(R.id.txtsettingname);
ImageButton btnoff = (ImageButton) v.findViewById(R.id.btnoff);
ImageButton btnon = (ImageButton) v.findViewById(R.id.btnon);
holder.title = tv;
holder.btnoff = btnoff;
holder.btnon = btnon;
v.setTag(holder);
}
final ViewHolder holder = (ViewHolder) v.getTag();
String albums = getItem(position).title;
holder.btnoff.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
ImageButton cb = (ImageButton) v;
Item _state = (Item) cb.getTag();
_state.setSelected(false);
holder.btnon.setVisibility(View.VISIBLE);
holder.btnoff.setVisibility(View.GONE);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
});
holder.btnon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
ImageButton cb = (ImageButton) v;
Item _state = (Item) cb.getTag();
_state.setSelected(true);
// TODO Auto-generated method stub
holder.btnoff.setVisibility(View.VISIBLE);
holder.btnon.setVisibility(View.GONE);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
});
holder.title.setText(albums);
Item state = myarrraylist.get(position);
if (state.isSelected()) {
holder.btnon.setVisibility(View.VISIBLE);
holder.btnoff.setVisibility(View.GONE);
} else {
holder.btnon.setVisibility(View.GONE);
holder.btnoff.setVisibility(View.VISIBLE);
}
holder.btnon.setTag(state);
return v;
}
请帮忙。
您只需维护选定的“开”或“关”状态,只需保存按钮的位置并获取它,然后保存状态以获取您可以看到的更多详细信息ListView 的回收是如何工作的 http://android.amberfog.com/?p=296。另外,对于一个工作演示示例,您可以查看我的博客老鼠料理鼠王 https://stackoverflow.com/a/22602934/726863在这个答案中已经指出。
我只显示btnoff
按钮的操作方式与其他按钮相同
Psuedo code
在你的代码中会是这样的,
public View getView(final int position, View convertView,
ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
holder.title tv = (TextView) convertView.findViewById(R.id.txtsettingname);
holder.btnoff btnoff = (ImageButton) convertView.findViewById(R.id.btnoff);
holder.btnon btnon = (ImageButton) convertView.findViewById(R.id.btnon);
holder.btnoff.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int pos = (Integer)v.getTag();
myarrraylist.get(pos).setSelected(false);
}
});
convertView.setTag(holder);
}
else{
holder = convertView.getTag();
}
holder.btnoff btnoff.setTag(position);
holder.btnoff btnon.setTag(position);
if (myarrraylist.get(position).isSelected()) {
holder.btnon.setVisibility(View.VISIBLE);
holder.btnoff.setVisibility(View.GONE);
} else {
holder.btnon.setVisibility(View.GONE);
holder.btnoff.setVisibility(View.VISIBLE);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)