簡體   English   中英

Android RecyclerView pass position 永遠是最后一個

[英]Android RecyclerView pass position is always the last one

美好的一天,我想將 position 從RecyclerView的適配器傳遞到MainActivity ,所以我設計了一個接口:

在 RecyclerViewAdapter 中:

 publuc interface recyclerViewAdapterListener{
   void onDeviceConnect(data, position)
 }

 public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
   //here I call onDeviceConnect
   holder.button.setOnClickListener(new View.OnClickListener(){
   public void onClick(View view) {
     listener.onDeviceConnect(data, position);
   }
 

在 MainActicity 中:

 private int pos;

 public void onDeviceConnect(data,position){
  pos = position; 
 }

我知道問題是pos = position ,那總是會得到最后一個 position。

但我需要來自RecyclerView的數據和 position ,因為當我的設備連接時,

它將更改RecyclerView的項目。

例如:(在 MainActivity 中)

    case BleService.ACTION_NOTIFY_ON: //here my device is connected.
       updateStatus(mac,status);      //update status

    private void updateStatus(mac,status){
       Adapter.updateItem(data, pos);   //call adapter's item
    }

例如:(在 RecyclerViewAdapter 中)

   public void updateItem(data,pos){
     if (dataList.size() != 0){
          dataList.set(pos, data);
          notifyItemChanged(pos);
   }

有什么好主意可以解決嗎,謝謝。

在 MainActicity 中:

`

public class MainActicity extends AppCompatActivity implements YourRecyleAdaptor.recyclerViewAdapterListener{
private int pos;


@Override
 public void onDeviceConnect(data,position){
  pos = position; 
 }

`

嘗試用holder.getAdapterPosition()替換position

 public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
     //here I call onDeviceConnect
     holder.button.setOnClickListener(new View.OnClickListener(){
     public void onClick(View view) {
         listener.onDeviceConnect(data, holder.getAdapterPosition());
   }

或者也可以在ViewHolder setOnClickListener的構造函數中設置OnClickListener

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM