第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 FirebaseRecyclerAdapter 獲取文檔 ID 并將值傳遞到新頁面

從 FirebaseRecyclerAdapter 獲取文檔 ID 并將值傳遞到新頁面

慕勒3428872 2022-06-08 16:42:00
我有一個顯示文檔列表的 FirestoreRecyclerAdapter。我在列表中的每個項目旁邊都有一個按鈕。單擊此按鈕時,我想獲取所選項目的唯一 ID,然后將用戶帶到顯示該項目的個人詳細(xì)信息的頁面。本質(zhì)上,我想將單擊的文檔的 ID 傳遞到下一頁。但是,我的按鈕在單擊時會引發(fā)空指針異常。這段代碼來自我的 ClubAdapter 類。public class ClubAdapter1 extends FirestoreRecyclerAdapter<Club, ClubAdapter1.ClubHolder> {    private String clubId;    private Context context;    public ClubAdapter1(@NonNull FirestoreRecyclerOptions<Club> options) {        super(options);    }    @Override    protected void onBindViewHolder(@NonNull ClubHolder holder, int position, @NonNull Club model) {        holder.lblName.setText(model.getClubName());        //getting the ID of the particular event clicked        clubId = getSnapshots().getSnapshot(position).getId();        holder.btnDetails.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(context, ViewSingleClub.class);                i.putExtra("id", clubId);                context.startActivity(i);            }        });    }    @NonNull    @Override    public ClubHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.clublist_layout, parent, false);        return new ClubHolder(v);    }    class ClubHolder extends RecyclerView.ViewHolder {        TextView lblName;        Button btnDetails;        public ClubHolder(@NonNull View itemView) {            super(itemView);            lblName = itemView.findViewById(R.id.lblName);            btnDetails = itemView.findViewById(R.id.btnDetails);        }    }}我不斷收到錯誤, Intent i = new Intent(context, ViewSingleClub.class); 我認(rèn)為這可能與我的上下文變量引用自身有關(guān),但也不確定我是否正確獲取了 ID。有人能幫忙嗎?
查看完整描述

2 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊

這是因為您正在分配“自身的上下文”。從初始化適配器的類中傳遞上下文。


假設(shè)我有名為“ClubAdapter”的適配器和名為“ClubClass”的調(diào)用類


在俱樂部類:


ClubAdapter clubAdapter = new ClubAdapter(list, context);

// if you'r calling it from activity then pass "Activity.this" and if fragment then "getContext()" as context.


并在 ClubAdapter

public class ClubAdapter extends RecyclerView.Adapter<ClubAdapter.ClubHolder> {

    private Context context;

    private List<String> list;

   


    public ClubAdapter(List<String> list, Context context) {

        this.list = list;

        this.context = context;

    }

    

    @NonNull

    @Override

    public ClubHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View itemView = LayoutInflater.from(viewGroup.getContext())

                .inflate(R.layout.item_sample, viewGroup, false);

        return new ClubHolder(itemView, context);

    }

    

    

    public class ClubHolder extends RecyclerView.ViewHolder {


        private Context context;


        private ClunHolder(@NonNull View itemView,Context context) {

            super(itemView);

            this.context = context;

           

        }

        }

}


或者你可以制作這樣的界面。


public interface RecycleViewOnItemClickListener {

    void onItemClick(int position);

}


并將其從調(diào)用類傳遞給您的適配器。


假設(shè)我有名為“SampleAdapter”的適配器并調(diào)用名為“SampleClass”的類在“SampleClass”中,您可以將適配器中的接口作為參數(shù)傳遞。


SampleAdapter sampleAdapter = new SampleAdapter(list, new RecycleViewOnItemClickListener() {

            @Override

            public void onItemClick(int position) {

                // do what you want to perform

            }

        });


在“俱樂部適配器”中


public class ClubAdapter extends RecyclerView.Adapter<ClubAdapter.ClubHolder> {

        private RecycleViewOnItemClickListener recycleViewOnItemClickListener;

        private List<String> list;

       


        public ClubAdapter(List<String> list, RecycleViewOnItemClickListener recycleViewOnItemClickListener) {

            this.list = list;

            this.recycleViewOnItemClickListener = recycleViewOnItemClickListener;

        }

        

        @NonNull

        @Override

        public ClubHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

            View itemView = LayoutInflater.from(viewGroup.getContext())

                    .inflate(R.layout.item_sample, viewGroup, false);

            return new ClubHolder(itemView, recycleViewOnItemClickListener);

        }

        

        

        public class ClubHolder extends RecyclerView.ViewHolder {


            private RecycleViewOnItemClickListener recycleViewOnItemClickListener;


            private ClunHolder(@NonNull View itemView,RecycleViewOnItemClickListener recycleViewOnItemClickListener) {

                super(itemView);

                this.recycleViewOnItemClickListener = recycleViewOnItemClickListener;

               //you can callback onItemClick method from here on button click event so it give callback in "ClubActivity".

               btn.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    recycleViewOnItemClickListener.onItemClick(getAdapterPosition());

                }

            });

            }

            }

            }


查看完整回答
反對 回復(fù) 2022-06-08
?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗 獲得超6個贊

要解決此問題,請在方法中移動以下代碼行,onBindViewHolder()如下所示:


holder.btnDetails.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

        Intent i = new Intent(context, ViewSingleClub.class);

        i.putExtra("id", clubId);

        context.startActivity(i);

    }

});

看,我在holder.btnDetails.


編輯:


根據(jù)您的意見,還請進(jìn)行以下操作。將構(gòu)造函數(shù)更改為:


public ClubAdapter1(@NonNull FirestoreRecyclerOptions<Club> options, Context context) {

    super(options);

    this.context = context;

}

當(dāng)您在活動中創(chuàng)建適配器類的對象時,還將 傳遞context給構(gòu)造函數(shù)。


查看完整回答
反對 回復(fù) 2022-06-08
  • 2 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號