Dapatkan item yang diklik dan posisinya di RecyclerView

105

Saya mengganti saya ListViewdengan RecyclerView, daftar menunjukkan ok, tapi saya ingin tahu bagaimana cara mendapatkan item yang diklik dan posisinya, mirip dengan metode yang OnItemClickListener.onItemClick(AdapterView parent, View v, int position, long id)kita gunakan ListView.

Terima kasih atas idenya!

Xcihnegn
sumber

Jawaban:

177

Berdasarkan tautan: Mengapa RecyclerView tidak memiliki onItemClickListener ()? dan Bagaimana RecyclerView berbeda dari Listview? , dan juga ide umum @ Duncan, saya berikan solusinya di sini:

  • Tentukan satu antarmuka RecyclerViewClickListeneruntuk meneruskan pesan dari adaptor ke Activity/ Fragment:

    public interface RecyclerViewClickListener {
        public void recyclerViewListClicked(View v, int position);
    }
    
  • Di Activity/ Fragmentimplementasikan antarmuka, dan juga teruskan listener ke adaptor:

    @Override
    public void recyclerViewListClicked(View v, int position){... ...}
    
    //set up adapter and pass clicked listener this
    myAdapter = new MyRecyclerViewAdapter(context, this);
    
  • Dalam Adapterdan ViewHolder:

    public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ItemViewHolder> {
       ... ... 
       private Context context;
       private static RecyclerViewClickListener itemListener;
    
    
       public MyRecyclerViewAdapter(Context context, RecyclerViewClickListener itemListener) {
           this.context = context;
           this.itemListener = itemListener;
           ... ...
       }
    
    
       //ViewHolder class implement OnClickListener, 
       //set clicklistener to itemView and, 
       //send message back to Activity/Fragment 
       public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
           ... ...
           public ItemViewHolder(View convertView) {
               super(convertView);
               ... ...
               convertView.setOnClickListener(this);
           }
    
           @Override
           public void onClick(View v) {
               itemListener.recyclerViewListClicked(v, this.getPosition());     
    
           }
       }
    }
    

Setelah pengujian, ini berfungsi dengan baik.


[ UPDATE ]

Sejak API 22, RecyclerView.ViewHoler.getPosition()tidak digunakan lagi, jadi dengan getLayoutPosition().

Xcihnegn
sumber
22
gunakan metode getLayoutPosition () karena getPosition () sekarang dikosongkan.
Ankur Chaudhary
2
terima kasih untuk bagian kode ini :) hanya satu tip: referensi statis private static RecyclerViewClickListener itemListener;dengan cara statis di konstruktor.
David Artmann
1
@khurramengr Saya akhirnya menambahkan pendengar ke setiap item dalam metode onBindViewHolder. Selain itu, item daftar saya tidak semuanya dapat diklik (hanya sebagian dari item tersebut).
Ferran Negre
1
Jika Anda tidak menggunakan WeakReference di sini: new MyRecyclerViewAdapter(context, this)? Ini dapat menyebabkan kebocoran memori
RamwiseMatt
2
public void recyclerViewListClicked(View v, int position);Pengubah publicadalah redundan untuk metode antarmuka
Joel Raju
35
public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.MyViewHolder>{
    public Context context;
    public ArrayList<RvDataItem> dataItems;

    ...
    constructor
    overrides
    ...

    class MyViewHolder extends RecyclerView.ViewHolder{
        public TextView textView;
        public Context context;

        public MyViewHolder(View itemView, Context context) {
            super(itemView);

            this.context = context;

            this.textView = (TextView)itemView.findViewById(R.id.textView);

            // on item click
            itemView.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    // get position
                    int pos = getAdapterPosition();

                    // check if item still exists
                    if(pos != RecyclerView.NO_POSITION){
                        RvDataItem clickedDataItem = dataItems.get(pos);
                        Toast.makeText(v.getContext(), "You clicked " + clickedDataItem.getName(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
}
Uday Hiwarale
sumber
4
Terima kasih. getAdapterPosition () adalah yang saya butuhkan.
Ayaz Alifov
1
Terima kasih untuk kode man !! Menyelamatkan hariku. Saya tidak yakin di mana harus meletakkan getAdapterPosition () dan mengikuti kode Anda, saya membuatnya berfungsi ... Bagus dan mudah :)
Vinay Vissh
Terima kasih banyak kawan, kode Anda tepat saya membutuhkannya! Pria yang bahagia
Naveen Nirban Yadav
13

Berikut adalah Contoh untuk menyetel Pemroses Klik.

Adapter extends  RecyclerView.Adapter<MessageAdapter.MessageViewHolder> {  ...  }

 public static class MessageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        public TextView     tv_msg;
        public TextView     tv_date;
        public TextView     tv_sendTime;
        public ImageView    sharedFile;
        public ProgressBar sendingProgressBar;

        public MessageViewHolder(View v) {
            super(v);
            tv_msg =  (TextView) v.findViewById(R.id.tv_msg);
            tv_date = (TextView)  v.findViewById(R.id.tv_date);
            tv_sendTime = (TextView)  v.findViewById(R.id.tv_sendTime);
            sendingProgressBar = (ProgressBar) v.findViewById(R.id.sendingProgressBar);
            sharedFile = (ImageView) v.findViewById(R.id.sharedFile);

            sharedFile.setOnClickListener(this);

        }

        @Override
        public void onClick(View view) {
        int position  =   getAdapterPosition();


            switch (view.getId()){
                case R.id.sharedFile:


                    Log.w("", "Selected"+position);


                    break;
            }
        }

    }
Gilberto Ibarra
sumber
Apa itu getAdapterPostion (); sini?
TheDevMan
1
posisi tampilan diklik. bukan metode khusus.
Gilberto Ibarra
Ini sepertinya cara terbersih untuk melakukan ini, terutama karena Anda hampir selalu tertarik untuk mendapatkan data menggunakan posisi tersebut dan mungkin tidak memiliki akses ke objek RecyclerView.
FrostRocket
Terima kasih banyak untukint position = getAdapterPosition();
Shylendra Madda
Harap perhatikan bahwa memanggil getAdapterPosition saat daftar sedang diperbarui, misalnya karena memanggil notififyXYZ, akan mengembalikan -1
David
11

Letakkan kode ini di tempat Anda mendefinisikan tampilan pendaur ulang dalam aktivitas.

    rv_list.addOnItemTouchListener(
            new RecyclerItemClickListener(activity, new RecyclerItemClickListener.OnItemClickListener() {
                @Override
                public void onItemClick(View v, int position) {

                    Toast.makeText(activity, "" + position, Toast.LENGTH_SHORT).show();
                }
            })
    );

Kemudian buat kelas terpisah dan masukkan kode ini:

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {

    private OnItemClickListener mListener;
    public interface OnItemClickListener {
        public void onItemClick(View view, int position);
    }
    GestureDetector mGestureDetector;
    public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });
    }
    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}
bhumika rijiya
sumber
7

buat file java dengan kode di bawah ini

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;

public interface OnItemClickListener {
    public void onItemClick(View view, int position);
}

GestureDetector mGestureDetector;

public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
    mListener = listener;
    mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        @Override public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
    });
}

@Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
    View childView = view.findChildViewUnder(e.getX(), e.getY());
    if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
        mListener.onItemClick(childView, view.getChildLayoutPosition(childView));
        return true;
    }
    return false;
}

@Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { }

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}

dan cukup gunakan pendengar pada objek RecyclerView Anda.

recyclerView.addOnItemTouchListener(  
new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
  @Override public void onItemClick(View view, int position) {
    // TODO Handle item click
  }
}));
MazRoid
sumber
RecyclerItemClickListenerbukan kelas android default, Anda harus menyediakan perpustakaan yang Anda gunakan atau kelas itu sendiri.
Greg
@Greg terima kasih !! saya lupa memposting!
MazRoid
5

Jika Anda menginginkan event Click of recycle-View dari activity / fragment dan bukan dari adaptor maka Anda juga bisa menggunakan cara pintas berikut ini.

recyclerView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                final TextView txtStatusChange = (TextView)v.findViewById(R.id.txt_key_status);
                txtStatusChange.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.e(TAG, "hello text " + txtStatusChange.getText().toString() + " TAG " + txtStatusChange.getTag().toString());
                        Util.showToast(CampaignLiveActivity.this,"hello");
                    }
                });
                return false;
            }
        });

Anda juga dapat menggunakan cara lama lainnya seperti menggunakan antarmuka

Amandeep Rohila
sumber
,, hai disana, tapi bagaimana jika kita harus mendapatkan posisi item diklik juga. ?
mfaisalhyder
Anda tinggal mengatur posisi item di TAG melalui adaptor dan kemudian mendapatkan tag seperti yang disebutkan di atas txtStatusChange.getTag ().
ToString
@AmandeepRohila Agar kodenya berfungsi, saya harus menggulir ke ujung recyclerview horizontal terlebih dahulu. Baru kemudian roti panggang itu berhasil. Bukankah ada cara untuk membuatnya berfungsi tanpa harus menggulir maju dan mundur terlebih dahulu?
iOSAndroidWindowsMobileAppsDev
4
recyclerViewObject.addOnItemTouchListener(
    new RecyclerItemClickListener(
        getContext(),
        recyclerViewObject,
        new RecyclerItemClickListener.OnItemClickListener() {
            @Override public void onItemClick(View view, int position) {
                // view is the clicked view (the one you wanted
                // position is its position in the adapter
            }
            @Override public void onLongItemClick(View view, int position) {
            }
        }
    )
);
Cosmin Badulescu
sumber
Sihir apa ini? Bekerja dengan sempurna.
Bolling
2

Gunakan kode di bawah ini: -

public class SergejAdapter extends RecyclerView.Adapter<SergejAdapter.MyViewHolder>{

...

class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{


    @Override
    public void onClick(View v) {
        // here you use position
        int position = getAdapterPosition();
        ...

    }
}
}
Akanksha Rathore
sumber
1

RecyclerView tidak menyediakan metode seperti itu.

Untuk mengelola kejadian klik di RecyclerView, saya akhirnya mengimplementasikan onClickListener di adaptor saya, saat mengikat ViewHolder: Di ViewHolder saya, saya menyimpan referensi ke tampilan root (seperti yang dapat Anda lakukan dengan ImageView, TextView, dll ...) dan saat mengikat viewHolder Saya menetapkan tag di atasnya dengan informasi yang saya perlukan untuk menangani klik (seperti posisi) dan clicklistener

Zoubiock
sumber
3
ya kita dapat mengatur pendengar klik di ViewHolder, tetapi saya perlu mengembalikan tampilan dan posisi item yang diklik ke fragmen saya untuk proses lebih lanjut
Xcihnegn
1

Berikut cara termudah dan termudah untuk menemukan posisi item yang diklik:

Saya juga menghadapi masalah yang sama.

Saya ingin menemukan posisi item yang diklik / dipilih dari RecyclerView () dan melakukan beberapa operasi spesifik pada item tersebut.

Metode getAdapterPosition () bekerja seperti pesona untuk hal-hal semacam ini. Saya menemukan metode ini setelah seharian melakukan penelitian yang panjang dan setelah mencoba berbagai metode lainnya.

int position = getAdapterPosition();
Toast.makeText(this, "Position is: "+position, Toast.LENGTH_SHORT).show();

Anda tidak perlu menggunakan metode tambahan apa pun. Cukup buat variabel global bernama 'position' dan inisialisasi dengan getAdapterPosition () di salah satu metode utama adaptor (kelas atau serupa).

Berikut adalah dokumentasi singkat dari tautan ini .

getAdapterPosition ditambahkan dalam versi 22.1.0 int getAdapterPosition () Mengembalikan posisi Adapter dari item yang diwakili oleh ViewHolder ini. Perhatikan bahwa ini mungkin berbeda dari getLayoutPosition () jika ada pembaruan adaptor yang tertunda, tetapi tata letak baru belum terjadi. RecyclerView tidak menangani pembaruan adaptor apa pun hingga traversal tata letak berikutnya. Ini dapat membuat ketidakkonsistenan sementara antara apa yang dilihat pengguna di layar dan konten adaptor yang dimiliki. Ketidakkonsistenan ini tidak penting karena kurang dari 16 md tetapi mungkin menjadi masalah jika Anda ingin menggunakan posisi ViewHolder untuk mengakses adaptor. Terkadang, Anda mungkin perlu mendapatkan posisi adaptor yang tepat untuk melakukan beberapa tindakan sebagai respons terhadap peristiwa pengguna. Dalam hal ini, Anda harus menggunakan metode ini yang akan menghitung posisi Adaptor ViewHolder.

Saya senang bisa membantu. Jangan ragu untuk menanyakan keraguan.

Himanshu Nimje
sumber
apa cara termudah dan termudah untuk mendapatkan nilai item yang diklik dari RecyclerView?
अक्षय परूळेकर
1

Solusi sederhana saya

Make a position holder:

    public class PositionHolder {

    private int position;

    public PositionHolder(int position) {
        this.position = position;
    }

    public int getPosition() {
        return position;
    }

    public void setPosition(int position) {
        this.position = position;
    }
}

Cukup letakkan atau letakkan data yang perlu Anda peroleh dari aktivitas.

Konstruktor adaptor:

public ItemsAdapter(Context context, List<Item> items, PositionHolder positionHolder){
        this.context = context;
        this.items = items;
        this.positionHolder = positionHolder;
}

Dalam Aktivitas:

 @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        selectedPosition = 0;

        positionHolder = new PositionHolder(selectedPosition);
        initView();
    }

Di Adapter onClickLictener pada item
di onBindViewHolder

holder.holderButton.setOnClickListener(v -> {
            positionHolder.setPosition(position);
            notifyDataSetChanged();
        });

Sekarang setiap kali Anda mengubah posisi di RecyclerView, itu ditahan di Holder (atau mungkin harus disebut Listener)

Semoga bermanfaat

Posting pertama saya; P

Mateusz Niedbal
sumber
0
//Create below methods into the Activity which contains RecyclerView.


private void createRecyclerView() {

final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    MyAdapter myAdapter=new MyAdapter(dataAray,MianActivity.this);
    recyclerView.setAdapter(myAdapter);
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    setRecyclerViewClickListner(recyclerView);
}

private void setRecyclerViewClickListner(RecyclerView recyclerView){

    final GestureDetector gestureDetector = new GestureDetector(MainActivity.this,new GestureDetector.SimpleOnGestureListener() {
        @Override public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
    });


    recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
            View child =recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY());
            if(child!=null && gestureDetector.onTouchEvent(motionEvent)){
               int position=recyclerView.getChildLayoutPosition(child);
                String name=itemArray.get(position).name;

            return true;
        }

        @Override
        public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {

        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean b) {

        }
    });
}
Kamran
sumber
3
Harap tambahkan penjelasan, hanya membuang kode tanpa pengantar dan penjelasan bagaimana ini memperbaiki masalah tidak terlalu membantu.
Mark Rotteveel
0

Coba dengan cara ini

Kelas adaptor:

 public class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> {

public interface OnItemClickListener {
    void onItemClick(ContentItem item);
}

private final List<ContentItem> items;
private final OnItemClickListener listener;

public ContentAdapter(List<ContentItem> items, OnItemClickListener listener) {
    this.items = items;
    this.listener = listener;
}

@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item, parent, false);
    return new ViewHolder(v);
}

@Override public void onBindViewHolder(ViewHolder holder, int position) {
    holder.bind(items.get(position), listener);
}

@Override public int getItemCount() {
    return items.size();
}

static class ViewHolder extends RecyclerView.ViewHolder {

    private TextView name;
    private ImageView image;

    public ViewHolder(View itemView) {
        super(itemView);
        name = (TextView) itemView.findViewById(R.id.name);
        image = (ImageView) itemView.findViewById(R.id.image);
    }

    public void bind(final ContentItem item, final OnItemClickListener listener) {
        name.setText(item.name);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                listener.onItemClick(item);
            }
        });
    }
}

}

Dalam Aktivitas atau fragmen Anda:

ContentAdapter adapter = new ContentAdapter(itemList, this);

Catatan: Implementasikan OnItemClickListener berdasarkan konteks yang Anda berikan dalam aktivitas atau metode fragmen dan overide.

RajeshVijayakumar
sumber
Solusi bagus di atas. Bisakah Anda menambahkan di atas untuk menunjukkan seperti apa metode onItemClick dalam Activity? Saya mencoba meneruskan posisi item ke Intent (untuk membuka Aktivitas berikutnya) dan saya terus mendapatkan posisi yang salah.
AJW
0

Setiap kali saya menggunakan pendekatan lain. Orang-orang tampaknya menyimpan atau mendapatkan posisi pada tampilan, daripada menyimpan referensi ke objek yang ditampilkan oleh ViewHolder.

Saya menggunakan pendekatan ini sebagai gantinya, dan hanya menyimpannya di ViewHolder ketika onBindViewHolder () dipanggil, dan menetapkan referensi ke null di onViewRecycled ().

Setiap kali ViewHolder menjadi tidak terlihat, itu didaur ulang. Jadi ini tidak berpengaruh pada konsumsi memori yang besar.

@Override
public void onBindViewHolder(final ItemViewHolder holder, int position) {
    ...
    holder.displayedItem = adapterItemsList.get(i);
    ...
}

@Override
public void onViewRecycled(ItemViewHolder holder) {
    ...
    holder.displayedItem = null;
    ...
}

class ItemViewHolder extends RecyclerView.ViewHolder {
    ...
    MySuperItemObject displayedItem = null;
    ...
}
Kirill Volkov
sumber
0

Ekstensi singkat untuk Metode Kotlin
mengembalikan posisi absolut semua item (bukan posisi hanya item yang terlihat).

fun RecyclerView.getChildPositionAt(x: Float, y: Float): Int {
    return getChildAdapterPosition(findChildViewUnder(x, y))
}

Dan penggunaan

val position = recyclerView.getChildPositionAt(event.x, event.y)
Pavel Shorokhov
sumber
0

Gunakan getLayoutPosition () dalam metode java antarmuka kustom Anda. Ini akan mengembalikan posisi item yang dipilih, periksa detail lengkapnya

https://becody.com/get-clicked-item-and-its-position-in-recyclerview/

Rana Aamer
sumber
1
Selamat datang di Stack Overflow! Meskipun tautan adalah cara yang bagus untuk berbagi pengetahuan, mereka tidak akan benar-benar menjawab pertanyaan jika rusak di masa mendatang. Tambahkan ke jawaban Anda konten penting dari tautan yang menjawab pertanyaan. Jika isinya terlalu kompleks atau terlalu besar untuk dimuat di sini, jelaskan gagasan umum dari solusi yang diusulkan. Ingatlah untuk selalu menyimpan referensi tautan ke situs web solusi asli. Lihat: Bagaimana cara menulis jawaban yang baik?
sɐunıɔ ןɐ qɐp
0

Dari desainer, Anda dapat menyetel onClickproperti listItem ke metode yang ditentukan dengan parameter tunggal. Saya memiliki metode contoh yang ditentukan di bawah ini. Metode getAdapterPosition akan memberi Anda indeks listItem yang dipilih.

public void exampleOnClickMethod(View view){
    myRecyclerView.getChildViewHolder(view).getAdapterPosition());
}

Untuk informasi tentang menyiapkan RecyclerView, lihat dokumentasinya di sini: https://developer.android.com/guide/topics/ui/layout/recyclerview

Spencer Milner
sumber
0
//simply check if the adapter position you get not less than zero

holder.btnDelItem.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(holder.getAdapterPosition()>=0){
            list.remove(holder.getAdapterPosition());
            notifyDataSetChanged();
        }
    }
});
Yasir Tariq
sumber
3
Saat menjawab pertanyaan lama, jawaban Anda akan jauh lebih berguna bagi pengguna StackOverflow lainnya jika Anda menyertakan beberapa konteks untuk menjelaskan bagaimana jawaban Anda membantu, terutama untuk pertanyaan yang sudah memiliki jawaban yang diterima. Lihat: Bagaimana cara menulis jawaban yang bagus .
David Buck
0

Setelah banyak trial and error saya menemukan bahwa ada cara yang sangat mudah untuk melakukan ini yaitu dengan membuat interface di kelas adaptor dan mengimplementasikannya dalam fragment sekarang inilah twistnya, saya instansiated model tampilan di dalam fungsi override saya yang ada di fragment sekarang Anda dapat mengirim data dari fungsi itu ke viemodel dan dari sana ke mana saja.

Saya tidak tahu apakah metode ini adalah metode pengkodean yang baik tetapi tolong beri tahu saya di komentar dan jika ada yang ingin melihat beri tahu saya di bagian komentar, saya secara teratur membuka aliran stackover.


sumber
0
recyclerView.addOnItemTouchListener(object : AdapterView.OnItemClickListener,
                RecyclerView.OnItemTouchListener {
                override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                    TODO("Not yet implemented")
                }

                override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {
                    TODO("Not yet implemented")
                }

                override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
                    TODO("Not yet implemented")
                }

                override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
                    TODO("Not yet implemented")
                }

            })

Jika menggunakan Kotlin

Sandeep Pareek
sumber
Meskipun kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan tentang bagaimana dan mengapa ini menyelesaikan masalah akan sangat membantu untuk meningkatkan kualitas posting Anda, dan mungkin menghasilkan lebih banyak suara. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang. Harap edit jawaban Anda untuk menambahkan penjelasan dan memberikan indikasi batasan dan asumsi apa yang berlaku.
Богдан Опир
-4

Di onViewHolder, setel onClickListiner ke tampilan mana pun dan di klik samping gunakan kode ini:

Toast.makeText (Drawer_bar.this, "posisi" + posisi, Toast.LENGTH_SHORT) .show ();

Ganti Drawer_Bardengan nama Aktivitas Anda.

Thasreef Mogral
sumber