【问题标题】:Get selected item text from RecycleView when button clicked单击按钮时从 RecycleView 获取所选项目文本
【发布时间】:2019-03-07 06:59:29
【问题描述】:

我只是想创建一个列表,当我单击“Selanjutnya”按钮时将显示当前选定的项目文本,但我不知道该怎么做。

所以当我点击“Selanjutnya”时,它会显示 22、23。目前,我使用 Big Nerd Ranch 多选来进行多选工作。

实现'com.bignerdranch.android:recyclerview-multiselect:+'

这是我的代码。

适配器

    public class KetuaAbsenAdapter extends RecyclerView.Adapter<KetuaAbsenAdapter.ViewHolder> {
        private List<KetuaAbsenList> listItems;
        private Context context;
        private MultiSelector mMultiSelector = new MultiSelector();

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.absen_list, parent, false);
            return new ViewHolder(v);
        }

        public KetuaAbsenAdapter(List<KetuaAbsenList> listItems, Context context) {
            this.listItems = listItems;
            this.context = context;
        }



        @Override
        public void onBindViewHolder(final ViewHolder holder, final int position) {
            final KetuaAbsenList listItem = listItems.get(position);
            holder.textViewMuridno.setText(listItem.getMuridno());
            holder.textViewMuridnama.setText(listItem.getMuridnama());
        }


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

        public class ViewHolder extends SwappingHolder implements View.OnClickListener {
            public TextView textViewMuridno;
            public TextView textViewMuridnama;
            public TextView textViewMuridkelas;
            public LinearLayout list_item_linear;
            public ViewHolder(View itemView) {
                super(itemView, mMultiSelector);
                textViewMuridno = (TextView) itemView.findViewById(R.id.muridno);
                textViewMuridnama = (TextView) itemView.findViewById(R.id.muridnama);
                textViewMuridkelas = (TextView) itemView.findViewById(R.id.muridkelas);
                list_item_linear = (LinearLayout) itemView.findViewById(R.id.list_item_linear);
                list_item_linear.setOnClickListener(this);
                itemView.setOnClickListener(this);
                mMultiSelector.setSelectable(true);
            }

            @Override
            public void onClick(View v) {
                if (mMultiSelector.tapSelection(this)) {
                    Toast.makeText(context, "terpilih", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(context, "tidak terpilih", Toast.LENGTH_LONG).show();
                }
            }
        }
    }

列表类

    public class KetuaDaftarAbsen extends AppCompatActivity {
        private RecyclerView recyclerView;
        private RecyclerView.Adapter adapter;
        private List<KetuaAbsenList> listItems;
        EditText YangTidakHadir;
        Button KetuaLanjut;
        Dialog dialog;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ketua_daftar_absen);
            YangTidakHadir = (EditText)findViewById(R.id.YangTidakHadir);
            recyclerView = findViewById(R.id.recyclerView);
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            listItems = new ArrayList<>();
            loadRecyclerViewData();
            LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                    new IntentFilter("custom-message"));
        }

        public void loadRecyclerViewData(){
            final String url = "https://gameblong.com/raset/daftar_absen.php";
            StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String s) {
                            try {
                                JSONObject jsonObject = new JSONObject(s);
                                String status = jsonObject.getString("status");
                                if(status.equals("sukses")){
                                    JSONArray array = jsonObject.getJSONArray("semua");
                                    for (int i = 0; i < array.length(); i++) {
                                        JSONObject o = array.getJSONObject(i);
                                        KetuaAbsenList item = new KetuaAbsenList(
                                                o.getString("murid_no"),
                                                o.getString("murid_nama"),
                                                o.getString("murid_kelas")
                                        );
                                        listItems.add(item);
                                    }
                                } else {
                                }

                                adapter = new KetuaAbsenAdapter(listItems, getApplicationContext());
                                recyclerView.setAdapter(adapter);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            error.printStackTrace();
                        }
                    }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<>();
                    return params;
                }
            };
            Volley.newRequestQueue(this).add(stringRequest);
        }

        public BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(final Context context, Intent intent) {
                final String muno = intent.getStringExtra("muridnomor");
                KetuaLanjut = (Button)findViewById(R.id.KetuaLanjut);
                KetuaLanjut.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        Toast.makeText(context, muno, Toast.LENGTH_LONG).show();
                    }
                });

            }
        };

    }

我可以使用 mMultiSelector.getSelectedPositions();在我的适配器上,但这只给出当前选定的位置(如 0、1),

【问题讨论】:

    标签: android android-recyclerview android-listview android-adapter


    【解决方案1】:

    在您的适配器中,您可以像这样添加 onClickListener

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.absen_list, parent, false);
              v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //your logic goes here
                }
            });
            return new ViewHolder(v);
        }
    

    【讨论】:

    • 我已经知道如何制作 onClickListener,我只想在单击按钮时获取选定的卡片值并用 toast 显示值..
    猜你喜欢
    • 2011-08-23
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多