我有一个自定义列表视图,它使用ImageView显示图像。当我单击图像时,我显示对话框。我想在单击图像 ImageView 时但在关闭对话框后更改图像视图的图像。
@Override
public void onClick(View v) {
ImageView imageview = (ImageView) v.findViewById(R.id.imageview);
int position;
switch (v.getId()) {
case R.id.imageview:
position=(Integer)v.getTag();
imageview.setImageResource(R.drawable.image2);
break;
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case dialog:
pDialog = new ProgressDialog(this);
pDialog.setTitle("Hello");
pDialog.setCancelable(true);
pDialog.show();
return pDialog;
default:
return null;
}
}
pDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
ImageView imageview = (ImageView)v.findViewById(R.id.imageview);
imageview.setImageResource(R.drawable.image2);
adapter.notify();
}
});
更改映像后应通知适配器
我没有太多关于你的代码的信息,但通常你可以使用这样的东西
class Adapter extends RecyclerView.Adapter<MyViewHolder> {
List<MyDataModel> items = new ArrayList<>();
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.setUp(items.get(position));
}
@Override
public int getItemCount() {
return items.size();
}
}
class MyViewHolder extends RecyclerView.ViewHolder {
ImageView someImageView;
public MyViewHolder(View itemView) {
super(itemView);
}
public void setUp(MyDataModel data) {
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Initialize your dialog properties
ProgressDialog dialog;
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
data.isDismissed = true;
yourRecyclerViewAdapterInstance.notifyItemChanged(getAdapterPosition());
}
});
}
});
if (data.isDismissed) {
someImageView.setImageResource(data.afterDismissImage);
} else someImageView.setImageResource(data.normalImage);
}
}
class MyDataModel {
int normalImage;
int afterDismissImage;
boolean isDismissed = false;
}