亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從 RecyclerViewAdapter 啟動 BottomSheet

從 RecyclerViewAdapter 啟動 BottomSheet

慕標琳琳 2023-04-13 15:52:28
我在布局中有一個卡片視圖,它有兩個文本視圖和一個圖像視圖,我有一個使用卡片視圖設置項目的回收器視圖。我想要實現的是在點擊 Card View 時啟動 Bottom Sheet這是主要活動中的代碼列表代碼List<Item> lstItem;    lstItem = new ArrayList<>();    lstItem.add(new Item("Samsung","Smartphones","QualitlstItem = new ArrayList<>();y Samsung Smartphones",R.drawable.samsung,"21000"));    lstItem.add(new Item("Lenovo","Smartphones","Quality Lenovo smartphones",R.drawable.lenovo,"15000"));將 Recycler View Adapter 附加到 Main Activity 的代碼        FragmentManager fragmentManager = getSupportFragmentManager();        RecyclerViewAdapter2 mainAdapter2 = new RecyclerViewAdapter2(lstItem,fragmentManager);        mainRecyclerView.setLayoutManager(new GridLayoutManager(this,3));        mainRecyclerView.setAdapter(mainAdapter2);Recycler View Adapter 2代碼        import android.content.Context;        import android.view.LayoutInflater;        import android.view.View;        import android.view.ViewGroup;        import android.widget.ImageView;        import android.widget.TextView;        import androidx.cardview.widget.CardView;        import androidx.fragment.app.FragmentManager;        import androidx.recyclerview.widget.RecyclerView;        import java.util.List;        public class RecyclerViewAdapter2 extends RecyclerView.Adapter<RecyclerViewAdapter2.MyViewHolder> {        private Context context;        private List<Item> data;        private FragmentManager fragmentManager;        public RecyclerViewAdapter2(List<Item> data, FragmentManager fragmentManager) {        this.data = data;        this.fragmentManager = fragmentManager;    }        @Override        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {          View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_items, parent, false);          return new MyViewHolder(view);        }}
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

在您的 onClick 偵聽器中,您需要使用fragmentManager傳遞給適配器的 。相反,你使用getSupportFragmentManager(). 更改后它對我有用。


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

    @Override

    public void onClick(View v) {


        BottomSheetFragment bottomSheetFragment = new BottomSheetFragment();

        // <-- Here change getSupportFragmentManager() to fragmentManager

        bottomSheetFragment.show(fragmentManager, bottomSheetFragment.getTag());


    }

});


查看完整回答
反對 回復 2023-04-13
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

從 RecyclerView.Adapter 調用 BottomSheetDialog 片段。試試這個對我來說效果很好。


DialogFragment bottomSheetDialogFragment = new BottomsheetDialog();               

bottomSheetDialogFragment.show(((FragmentActivity)mContext).getSupportFragmentManager(), bottomSheetDialogFragment.getTag());



查看完整回答
反對 回復 2023-04-13
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

你不能這樣做:


AppCompatActivity appCompatActivity = new AppCompatActivity();

FragmentManager fragmentManager = appCompatActivity.getSupportFragmentManager();

BottomSheetFragment bottomSheetFragment = new BottomSheetFragment();

bottomSheetFragment.show(fragmentManager, bottomSheetFragment.getTag());

您應該創建一個包含您的 BottomSheetFragment 的新活動(一個新類),并使用意圖啟動該活動。


查看完整回答
反對 回復 2023-04-13
  • 3 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號