简体   繁体   English

如何在 Android 的 gridview 中一次更改多个图像?

[英]How to change multiple image at once in gridview in Android?

I'm working on AndroidStudio with Java.我正在使用 Java 开发 AndroidStudio。

I have many imageviews inside gridview.我在 gridview 中有很多图像视图。 and I'm trying to apply click event which affects multiple imageviews at the same time我正在尝试应用同时影响多个图像视图的点击事件

what I want to do is: when one imageview is clicked another imageview, which is not been clicked to change its image.我想要做的是:当单击一个 imageview 时,另一个 imageview 未被单击以更改其图像。

for example, there is two imageview A and B in same gridview.例如,在同一个 gridview 中有两个 imageview A 和 B。 if I click A imageview, both A and B imageview set to different imagesources.如果我单击 A imageview,A 和 B imageview 都设置为不同的图像源。

what I can do is change only clicked imageview.我能做的就是改变只点击imageview。 I want to know how to access the unclicked items in gridview.我想知道如何访问 gridview 中未点击的项目。 I made onclick listener inside adapter.我在适配器内部制作了 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);
                }
            });

you can make an interface callback to know which item gets clicked for example this is ur interface您可以进行界面回调以了解单击了哪个项目,例如这是您的界面

interface OnClickListener {
    void onClick(int position)
}

and pass this interface to ur Adapter, and in the getView method whenever a view get clicked u can call the onClick method of the interface并将此接口传递给您的适配器,并在 getView 方法中,每当单击视图时,您都可以调用该接口的 onClick 方法

this is example code这是示例代码

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;
    }
}

To initiate The adapter, u can use this code,要启动适配器,您可以使用此代码,

 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();
            }
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM