如何在 Android 的 gridview 中一次更改多个图像?
How to change multiple image at once in gridview in Android?
我正在使用 Java 开发 AndroidStudio。
我在 gridview 中有很多图像视图。
我正在尝试应用同时影响多个图像视图的点击事件
我想做的是:
当一个 imageview 被点击时,另一个 imageview 没有被点击来改变它的图像。
例如,在同一个gridview中有两个imageview A和B。如果我点击 A imageview,A 和 B imageview 都设置为不同的图像源。
我能做的就是只更改点击的图像视图。
我想知道如何访问 gridview 中未点击的项目。
我在适配器中创建了 onclick 侦听器。
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.ingrid,parent,false);
ImageView blackorwhite = convertView.findViewById(R.id.blackOrWhite);
Integer val = mData.get(position);
blackorwhite.setImageResource(blockColor.get(val));
blackorwhite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blackorwhite.setImageResource(R.color.white);
}
});
您可以进行界面回调以了解点击了哪个项目,例如这是您的界面
interface OnClickListener {
void onClick(int position)
}
并将此接口传递给您的适配器,
并且在 getView 方法中,每当单击视图时,您都可以调用接口的 onClick 方法
这是示例代码
interface OnClickListener {
void onClick(int position);
}
public class GridViewAdapter extends BaseAdapter {
private List<String> list;
private OnClickListener listener;
private Context context;
public GridViewAdapter(Context context,List<String> list,OnClickListener listener){
this.listener = listener;
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(ur layout);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onClick(position);
}
});
return view;
}
}
要启动适配器,您可以使用此代码,
GridViewAdapter adapter = new GridViewAdapter(context, imageList, new OnClickListener() {
@Override
public void onClick(int position) {
// this method called every time an view get clicked
// and u can change the DataSet which now is imageList
// imageList.set(position,"something new ");
// after the change of DataSet u should cal the notifyDataSetChanged
adapter.notifyDataSetChanged();
}
});
我正在使用 Java 开发 AndroidStudio。
我在 gridview 中有很多图像视图。 我正在尝试应用同时影响多个图像视图的点击事件
我想做的是: 当一个 imageview 被点击时,另一个 imageview 没有被点击来改变它的图像。
例如,在同一个gridview中有两个imageview A和B。如果我点击 A imageview,A 和 B imageview 都设置为不同的图像源。
我能做的就是只更改点击的图像视图。 我想知道如何访问 gridview 中未点击的项目。 我在适配器中创建了 onclick 侦听器。
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.ingrid,parent,false);
ImageView blackorwhite = convertView.findViewById(R.id.blackOrWhite);
Integer val = mData.get(position);
blackorwhite.setImageResource(blockColor.get(val));
blackorwhite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blackorwhite.setImageResource(R.color.white);
}
});
您可以进行界面回调以了解点击了哪个项目,例如这是您的界面
interface OnClickListener {
void onClick(int position)
}
并将此接口传递给您的适配器, 并且在 getView 方法中,每当单击视图时,您都可以调用接口的 onClick 方法
这是示例代码
interface OnClickListener {
void onClick(int position);
}
public class GridViewAdapter extends BaseAdapter {
private List<String> list;
private OnClickListener listener;
private Context context;
public GridViewAdapter(Context context,List<String> list,OnClickListener listener){
this.listener = listener;
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(ur layout);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onClick(position);
}
});
return view;
}
}
要启动适配器,您可以使用此代码,
GridViewAdapter adapter = new GridViewAdapter(context, imageList, new OnClickListener() {
@Override
public void onClick(int position) {
// this method called every time an view get clicked
// and u can change the DataSet which now is imageList
// imageList.set(position,"something new ");
// after the change of DataSet u should cal the notifyDataSetChanged
adapter.notifyDataSetChanged();
}
});