【发布时间】:2015-01-16 07:10:25
【问题描述】:
我有一个listview,其中包含TextView 和ImageView。
这里是:
OnClick of ImageView 更改会打开一个带有“是”和“否”按钮的 alertdialog。
如果按是
imageView 将其背景更改为蓝色,
如果按否,
imageView 背景变为红色。
到目前为止,它工作正常。
我在listview 上方搜索edittext,它根据listview 中的textview 进行搜索。
现在在搜索时,imageview 没有显示更改的背景,而是仅显示默认背景。看到这个:
我应该怎么做才能使imageview 显示在警报对话框中选择的图像。
代码
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.custom_lay, null);
}else{
v=convertView;
}
holder = new ViewHolder();
holder.code = (TextView) v.findViewById(R.id.DealerName);
holder.btnName = (ImageView) v.findViewById(R.id.BtnStreet);
holder.btnName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View vi) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("select any one?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// holder.btnName.setBackgroundResource(R.drawable.green_icon);
vi.setBackgroundResource(R.drawable.blue_icon);
// notifyDataSetChanged();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
holder.btnName.setImageResource(R.drawable.blue_icon);
//vi.setBackgroundResource(R.drawable.green_icon);
// notifyDataSetChanged();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
v.setTag(holder);
ViewHolder hold = (ViewHolder) v.getTag();
String lb = DisplayedValues.get(position);
hold.code.setText(getItem(position));
// hold.btnName.setBackgroundResource(getSelectedItemPosition());
return v;
}
【问题讨论】:
-
您需要维护一个模型类才能知道按下了哪个按钮。否则,即使在滚动时,列表视图也会忘记哪个被按下。请参考这个答案:stackoverflow.com/a/27014443/2389078
-
请添加搜索码
-
并在全球范围内存储背景更改并在根据搜索条件填充列表视图时使用它们
标签: java android listview android-listview imageview