How to add gridview setOnItemClickListener

后端 未结 6 1314
难免孤独
难免孤独 2020-12-16 14:42

I have a GridView with 81 buttons on it. I want to add clicklistener to this gridview but it is not available. I have added the OnItemClickListener but it is not working and

相关标签:
6条回答
  • 2020-12-16 15:03

    GridView is clickable no need to put button inside GridView.

    To add listener to the grid add the following code:

    // Implement On Item click listener
    gridView1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
            switch (position) {
                case 0: 
                    break;
                case 1:
                    break;
    
            }
        }
    }); 
    

    And so on you can add all numbers in the cases.

    0 讨论(0)
  • 2020-12-16 15:05

    You are requesting click on the item(not on the button inside the item) so need to change your child XML layout

    from

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    
    <Button
        android:id="@+id/city"
        android:layout_width="183dp"
        android:layout_height="90dp"
        android:textSize="19sp"
        android:textStyle="bold"
        android:text="Code\n\nCity"
        android:gravity="center"
        android:background="@drawable/city_btn_tablet" />
    
    </RelativeLayout>
    

    to

    <?xml version="1.0" encoding="utf-8"?>
    <Button
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/city"
        android:layout_width="183dp"
        android:layout_height="90dp"
        android:textSize="19sp"
        android:clickable="true"
        android:textStyle="bold"
        android:text="Code\n\nCity"
        android:gravity="center"
        android:background="@drawable/city_btn_tablet" />
    

    or you can add ClickListener inside adapter

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
        View gridView;
    
        gridView =new View(mContext);
    
        gridView = inflater.inflate(R.layout.gridview_members, null);
    
        Button city = (Button) gridView.findViewById(R.id.city);
    
                    city.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
        //Toast here
    
            }});
    
        return gridView;
    }
    
    0 讨论(0)
  • 2020-12-16 15:08

    In your CustomAdapter into

     onBindViewHolder(...
    {
      yourViewHolder.gridview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //Do Something
           }
        });
    

    }

    0 讨论(0)
  • 2020-12-16 15:09

    I am suggesting you to add click listener in getview method rather than adding in activity class. try this code

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    View gridView;
    
    gridView =new View(mContext);
    
    gridView = inflater.inflate(R.layout.gridview_members, null);
    
    Button city = (Button) gridView.findViewById(R.id.city);
    
    city.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
                //Do your task here
            }
        });
        return gridView;
    }
    
    0 讨论(0)
  • 2020-12-16 15:15

    You can add click listener this way to your grid view items in Kotlin

    grdlyt_merchant_color_code.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
                loyaltyColor = parent.getItemAtPosition(position) as LoyaltyColor?
                colorCode= LoyaltyUtils.getLoyaltyColorById(loyaltyColor!!.colorId).colorCode
                val color = ContextCompat.getColor(requireContext(), colorCode!!)
                shape.setColor(color)
                loyalty_card_img.background = shape
                uncheckAllColors()
                loyalty_card_img.visibility = View.GONE
                loyaltyColor!!.isColorSelected = true
    
                mAdapter.notifyDataSetChanged()
            }
    
    
    0 讨论(0)
  • 2020-12-16 15:17

    If you want to get text that clicked item you can use this

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    String item = ((TextView)view.findViewById(R.id.ID_OF_TEXTVIEW)).getText().toString();
                    Toast.makeText(showMissions.this, "" + item, Toast.LENGTH_SHORT).show();
    
                }
            });
    
    0 讨论(0)
提交回复
热议问题