[英]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.