我该怎么让选择在网格视图图像的一次网格、视图、我该怎么、图像

2023-09-05 10:19:53 作者:爸,詯崾娶她

我有一个问题,我有一个自定义网格视图中,两个图像一个是背景图像和第二个是复选标记的图像,当我点击的网格视图选中标记显示一个项目其中presents选择形象,但是当我们要选择的网格视图中的第二个项目也显示了同样的图像上复选标记如在下面附加的图像,但我想,只有一个图像可以一次选择,这意味着如果选择了其他对号将去被隐藏。请建议我正确的结果。

code: * GridAdapter:的*

 公共类GridAdapter扩展了BaseAdapter {


    私人活动的活动;
    私人LayoutInflater充气= NULL;
    ArrayList的<整数GT;项目=新的ArrayList<整数GT;();

    INT检查= 0;
    公共GridAdapter(活动一,ArrayList的<整数GT;项目){
        活性= A;
        this.items =项目;
        充气=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    公众诠释getCount将(){
        返回items.size();
    }

    公共对象的getItem(INT位置){
        返回的位置;
    }

    众长getItemId(INT位置){
        返回的位置;
    }

    公共查看getView(最终诠释的立场,观点convertView,ViewGroup中父){
      //视图V = convertView;
          ImageView的IMG;
        最后ImageView的img_select;

        如果(convertView == NULL){
            convertView = inflater.inflate(R.layout.grid_items,NULL);
            img_select =(ImageView的)convertView.findViewById(R.id.check_image);
            img_select.setTag(位置);
            IMG =(ImageView的)convertView.findViewById(R.id.img_GridItem);
            img.setTag(位置);
            // img_select =(ImageView的)v.findViewById(R.id.itemCheckBox);

            img.setBackgroundResource(items.get(位置));


            img.setOnClickListener(新View.OnClickListener(){

            @覆盖
            公共无效的onClick(视图查看){
                Log.i(点击,标签###########);
                //img_select.setVisibility(View.INVISIBLE);
                img_select.setFocusable(真正的);
                img_select.setEnabled(真正的);
                如果(检查== 0)
                {

                img_select.setBackgroundResource(R.drawable.selectimage);
                GreetingTextContainer迎接= GreetingTextContainer.getSingletonObject();
                greet.setPosition(位置);
                检查= 1;
                }
                其他
                {
                    img_select.setBackgroundResource(0);
                    检查= 0;
                }
            }
        });
        }



        返回convertView;
    }
}
 

解决方案

在你的code,你忘了除非取消选择当前选择的图像的所有图像。只有你所做的就是设置背景选定的图像。你需要设置unseleted图片为他人藏汉

*的步骤-1 的*在GridAdapter类初始化为-1选定位置

  INT检查= 0;
INT selectedPosition = -1;
 
网格图片

*的步骤2 的*重写你的onclick方法,下面给出

  @覆盖
    公共无效的onClick(视图v){
         Log.i(点击,标签###########);
         //img_select.setVisibility(View.INVISIBLE);
         img_select.setFocusable(真正的);
         img_select.setEnabled(真正的);


        如果(检查== 0)
        {
            selectedPosition =位置;

        }
        的for(int i = 0; I< items.size();我++){
            如果(我== selectedPosition){
                img_select.setBackgroundResource(R.drawable.selectimage);
                GreetingTextContainer迎接= GreetingTextContainer.getSingletonObject();
                greet.setPosition(位置);
                检查= 1;
            }其他{
                 img_select.setBackgroundResource(0);
                 检查= 0;

            }
        }
    }
 

I have a question that I have a custom grid view in which two images one is the background image and second is the check mark image, when I clicked on one Item of grid view check mark shows which presents selection of image but when we want to select a second item of grid view it also shows check marks on the same image as shown in an below attached image, but I want that only one image can be selected at once, means if one is selected other checkmarks will goes to be hidden. Please suggest me the right result.

Code: *GridAdapter:*

public class GridAdapter extends BaseAdapter {


    private Activity activity;
    private LayoutInflater inflater = null;
    ArrayList<Integer> items = new ArrayList<Integer>();

    int checked=0;
    public GridAdapter(Activity a, ArrayList<Integer> items) {
        activity = a;
        this.items = items;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    public int getCount() {
        return items.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
      //  View v = convertView;
          ImageView img;
        final ImageView img_select;

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.grid_items, null);
            img_select = (ImageView)convertView.findViewById(R.id.check_image);
            img_select.setTag(position);
            img = (ImageView)convertView.findViewById(R.id.img_GridItem);
            img.setTag(position);
            //img_select = (ImageView)v.findViewById(R.id.itemCheckBox);

            img.setBackgroundResource(items.get(position));


            img.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Log.i("Clicked", "Tag###########");
                //img_select.setVisibility(View.INVISIBLE);
                img_select.setFocusable(true);
                img_select.setEnabled(true);
                if(checked==0)
                {

                img_select.setBackgroundResource(R.drawable.selectimage);
                GreetingTextContainer greet = GreetingTextContainer.getSingletonObject();
                greet.setPosition(position);
                checked =1;
                }
                else
                {
                    img_select.setBackgroundResource(0);
                    checked=0;
                }
            }
        });
        }



        return convertView;
    }
}

解决方案

In your code you forgot to unselect all images except the current selected image. only you have done is setting background for selected image. you need to set unseleted images for others aswell

*Step-1*initialize selected position as -1 in GridAdapter class

int checked=0;
int selectedPosition = -1; 

*Step-2*rewrite your onclick method as given below

@Override
    public void onClick(View v) {
         Log.i("Clicked", "Tag###########");
         //img_select.setVisibility(View.INVISIBLE);
         img_select.setFocusable(true);
         img_select.setEnabled(true);


        if(checked==0)
        {
            selectedPosition = position;

        }
        for(int i = 0; i<items.size(); i++){
            if(i == selectedPosition){
                img_select.setBackgroundResource(R.drawable.selectimage);
                GreetingTextContainer greet = GreetingTextContainer.getSingletonObject();
                greet.setPosition(position);
                checked =1;
            }else{
                 img_select.setBackgroundResource(0);
                 checked=0;

            }
        }
    }