【发布时间】:2015-03-21 19:04:43
【问题描述】:
我有一个自定义ListView。每行包含一个TextView 和ImageView。
看截图:
在项目上单击我使 ImageView 可见。但问题是一次只能看到一个ImageView。
我认为最好的方法是在点击时将所有其他ImageViews 设置为INVISIBLE。在所有图像消失之后,点击一个VISIBLE。
但我不知道如何在Adapter 中正确迭代:
private class TimeZoneItemAdapter extends ArrayAdapter<String> {
private Activity myContext;
private ArrayList<String> datas;
public TimeZoneItemAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {
super(context, textViewResourceId, objects);
myContext = (Activity) context;
datas = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = myContext.getLayoutInflater();
convertView = inflater.inflate(R.layout.listview_item, null);
viewHolder = new ViewHolder();
viewHolder.postNameView = (TextView) convertView.findViewById(R.id.listview_item);
viewHolder.postImageView = (ImageView) convertView.findViewById(R.id.image_mark);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.postNameView.setText(datas.get(position));
viewHolder.postNameView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//clear all image views during iteration
View view;
for (int i = 0; i < datas.size(); i++) {
//dont know which parameter need there for proper iteration
view = getView(i, ?????, null);
ImageView image = (ImageView) view.findViewById(R.id.image_mark);
image.setVisibility(View.INVISIBLE);
}
if (viewHolder.postImageView.getVisibility() != View.VISIBLE) {
selectedTimeZone = viewHolder.postNameView.getText().toString();
viewHolder.postImageView.setVisibility(View.VISIBLE);
} else {
viewHolder.postImageView.setVisibility(View.INVISIBLE);
}
}
});
return convertView;
}
class ViewHolder {
TextView postNameView;
ImageView postImageView;
}
}
请帮助我或提供一些提示。我真的很困惑。
【问题讨论】:
-
为你的行设置标签并尝试让 imageview 可见
-
我建议您为您的列表创建一个自定义对象,并选择一个字符串数据和一个布尔值。默认情况下将 selected 实例化为 false,单击 imageview 时实例化为 true。执行此操作时,您还将所有其他选择的对象参数设置为 false。
标签: android android-layout android-listview android-adapter