当前位置: 首页 > 知识库问答 >
问题:

如何使用接口将数据适配器传递给片段类?

范甫
2023-03-14
public class LiveContestAdapter extends RecyclerView.Adapter<LiveContestAdapter.MyViewHolder> {
    Context context;
    List<Contest_Data> contest_data;
    public TextView Quantity;
    public ImageButton btnIncrease,btnDecrease;
    private int mCounter = 1;
    private LiveContest  live_contest;
    Bundle bundle = new Bundle();

    public interface LiveContest{
        void onClick(int position);
    }

 public LiveContestAdapter(Context context,  List<Contest_Data> contest_data, LiveContest live_contest) {
        this.context=context;
        this.contest_data=contest_data;
        this.live_contest = live_contest;
    }
public LiveContestAdapter(Context context,  List<Contest_Data> contest_data) {
    this.context=context;
    this.contest_data=contest_data;
}

    @NonNull
    @Override
   public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
  context=viewGroup.getContext();
View vh=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_list_win_iphone,viewGroup,false);
        MyViewHolder myViewHolder=new MyViewHolder(vh);

        return myViewHolder;
    }



@Override
 public void onBindViewHolder(@NonNull final LiveContestAdapter.MyViewHolder myViewHolder, final int i) {
            final Contest_Data contest_position = contest_data.get(i);
            Picasso.with(context).load(contest_data.get(i).getContestImage()).error(R.drawable.damme).placeholder(R.drawable.damme).into(myViewHolder.img);
            myViewHolder.remainSlot.setText(contest_data.get(i).getContestTotal_slot());
            myViewHolder.ent_fee.setText(contest_data.get(i).getContestEntry_Fee());
            myViewHolder.Booked_Slot.setText(contest_data.get(i).getContestBooked());
            String contest_status = contest_data.get(i).getContestStatus();
            String previous_contest = contest_data.get(i).getPrevious_contest();
            String winner_announce = contest_data.get(i).getWinner_announce();


     myViewHolder.prize_breakup.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v)
                {
                    live_contest.onClick(i);
                }
            });    
        }

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

        public class MyViewHolder extends RecyclerView.ViewHolder {

            TextView name;
            ImageView img;
            TextView remainSlot;
            Button ent_fee;
            TextView totalslot;
            Button tandc;
            TextView eDate;
            Button share;
            Button prize_breakup;
            TextView Booked_Slot;
            ImageButton btnplus;
            ImageButton btnminus;
            TextView counter;
            Button htp;

            public MyViewHolder(@NonNull View itemView) {
                super(itemView);
                //name=itemView.findViewById(R.id.totalslot);
                img=itemView.findViewById(R.id.imageView2);
                htp = itemView.findViewById(R.id.button2);
                remainSlot=itemView.findViewById(R.id.tvTotalSlotNumber);
                ent_fee= itemView.findViewById(R.id.btnPrice);
                Booked_Slot = itemView.findViewById(R.id.tvSlotBookNumber);
                eDate = itemView.findViewById(R.id.tvDate1);
                tandc = itemView.findViewById(R.id.btnTerms);
                share= itemView.findViewById(R.id.btnShare);
                prize_breakup = itemView.findViewById(R.id.button3);
                btnplus = itemView.findViewById(R.id.ibIncrease);
                btnminus = itemView.findViewById(R.id.ibDecrese);
                counter  = itemView.findViewById(R.id.tvQuantity);
                //entery_fee = itemView.findViewById(R.id.buy_ticket);
            }
        }
    }
public class PrizeLayout extends Fragment implements LiveContestAdapter.LiveContest {

    List<Contest_Data> contest_data ;
    LiveContestAdapter live_contest_adapter;
    TextView nameFragTxt,yearFragTxt;
    String contest_id, contest_name;
    Intent intent;

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container , Bundle savedInstanceState)
    {

        View rootView =inflater.inflate(R.layout.prize_layout,container,false);


        live_contest_adapter = new LiveContestAdapter(getContext(), contest_data, new LiveContestAdapter.LiveContest(){
        @Override
        public void onClick(int position) {
        Toast.makeText(getContext(), "click ok button at" + position, LENGTH_LONG).show();
    }
        });


        return rootView;
    }


    @Override
    public void onClick(int position) {

    }
}

共有1个答案

广乐邦
2023-03-14

试试用这个

片段:-

 public class HomeFragment extends Fragment {

    List<String> contest_data;
    LiveContestAdapter live_contest_adapter;

    public static HomeFragment newInstance() {
        return new HomeFragment();
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.home_fragment, container, false);

        RecyclerView recyclerView = view.findViewById(R.id.recyclerView);
        live_contest_adapter = new LiveContestAdapter(getContext(), contest_data, new LiveContestAdapter.LiveContest() {
            @Override
            public void onClick(int position) {
                Toast.makeText(getContext(), "click ok button at" + position, LENGTH_LONG).show();
            }
        });
        recyclerView.setAdapter(live_contest_adapter);

        return view;
    }


}

适配器:-

    public class LiveContestAdapter extends RecyclerView.Adapter<LiveContestAdapter.MyViewHolder> {
    Context context;
    List<String> contest_data;
    public TextView Quantity;
    public ImageButton btnIncrease, btnDecrease;
    private int mCounter = 1;
    private LiveContest live_contest;
    Bundle bundle = new Bundle();

    public interface LiveContest {
        void onClick(int position);
    }

    public LiveContestAdapter(Context context, List<String> contest_data, LiveContest live_contest) {
        this.context = context;
        this.contest_data = contest_data;
        this.live_contest = live_contest;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        context = viewGroup.getContext();
        View vh = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_list_win_iphone, viewGroup, false);
        MyViewHolder myViewHolder = new MyViewHolder(vh);

        return myViewHolder;
    }


    @Override
    public void onBindViewHolder(@NonNull final LiveContestAdapter.MyViewHolder myViewHolder, final int pos) {
        myViewHolder.prize_breakup.setText("Button " + pos);

        myViewHolder.prize_breakup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                live_contest.onClick(pos);
            }
        });
    }

    @Override
    public int getItemCount() {
        return 10;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        Button prize_breakup;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            prize_breakup = itemView.findViewById(R.id.prize_breakup);
        }
    }
}
 类似资料:
  • 我有一个日历。要创建这个,我有一个日历片段,它打开了自定义日历视图 (扩展LinearLayout的类)。 然后使用(扩展ArrayAdapter的类)构建日历。 单击日历上的某个单元格时,您将进入一个新活动,在该活动中,您可以保存一个包含一些信息(以及日历中被单击的单元格的日期)的日志。 我在我的道类中有一个查询:,它被传递到,然后传递到。 查询:

  • 我正在尝试通过将数据与接口传递给片段来将数据从对话片段获取到片段。到目前为止,我知道首先是因为它的片段,我需要在MainActive上实现接口,并从那里将数据发送到我想要的任何片段。我明白,但我不知道如何做到这一点。到目前为止,我已经在MainActive中实现了接口,我正在获取数据,但我不知道如何将其发送到片段。 主要活动 对话片段-此对话片段从画廊/相机获取图片 片段-此片段应从dialogf

  • 我也没有百分之百地遵循它。在我共享的链接中,接口函数名为passDataCallback(),然后在OnBindViewholder中使用passResultCallback()。如果我使用passResultCallback,它不会解析,所以我不知道我是否做错了什么,或者它是否真的像我在上面的适配器中写的那样 我还没有在我的活动中收集这些数据,因为希望适配器至少首先被正确地编写,如果人们认为我需

  • 问题内容: 使用的bson功能创建查询时遇到了一些麻烦。我只是想做,但是我不知道怎么做。 我有一个s,并尝试直接传递它: 我看到了另一条建议使用的帖子,但这也不起作用: 我在这里和gh上浏览了他的文档和其他问题,但是大多数涉及切片的问题似乎都是关于将数据分成一个切片,而不是我想要达到的目的。 非常感激任何的帮助。 问题答案: 您最初的建议(通过值)没有缺陷,这样做是有效的。 问题是您使用它来查找和