簡體   English   中英

如何將數據從Adapter內部的onBindViewHolder傳遞到Tab

[英]How to pass data from onBindViewHolder inside Adapter to Tab

我的應用使用制表符。 如何將數據從選項卡3的適配器傳遞到選項卡1。選項卡使用viewPager。

當我單擊選項卡3上的項目時,它將使用viewPager.setCurrentItem(0)打開選項卡1。 打開時如何將數據傳遞到選項卡1。

例; 在操作來自另一個片段的片段時,請使用Bundle。 如何使用Tabs執行相同操作。

Tab 3 Adapter code

@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {

    final VendorHolder vendorHolder = list.get(position);       
    viewHolder.shoeName.setText(vendorHolder.getName());


    viewHolder.vendorName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final int shoeID =  position;

       //Data i want to pass
      Bundle bundle = new Bundle();
                bundle.putString("data1", "data");
                bundle.putString("dataType", "Type1");

final ViewPager viewPager = MainActivity.myViewpager; 
//Instance of viewpager in MainActivity
                viewPager.setCurrentItem(0);

   }
  });

 }


Inside Tab 1 
//Receive data here

在選項卡1中,接收“ data1”和“ dataType”

協助將不勝感激

您需要創建接口以將數據從一個活動或片段轉移到另一活動或片段。

像這樣:

public interface ClickListner {
void onClick(int position, int id);

}

注冊到適配器:-

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

private ClickListner clickListner;

MyAdapter(ClickListner clickListner){
this.clickListner = clickListner;
}

onBindViewHolder{

    holder.text.setOnClickListener(v -> clickListner.onClick(position, allLeadModelList.get(position).getId()));

}

}

和Activity或Fragment邊碼:

public class AllLeadsFragment extends Fragment implements ClickListner {

onCreateview(){

myAdapter = new MyAdapter(this::onClick);

}

@Override
public void onClick(int position, int id) {

}

}

您終於在onClick()中獲得了您的click listerner值。

暫無
暫無

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

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