【问题标题】:Recycle view get item value base on item clickedRecyclerview 根据单击的项目获取项目值
【发布时间】:2018-09-01 20:18:53
【问题描述】:

我只是创建了一个带有回收视图的对话框。当我单击该项目时,它应该根据我单击的内容设置编辑文本。但事实并非如此,它在回收视图中显示了第一个值。有人可以帮助我根据我点击的内容获得价值。我只是创建一个带有回收视图的对话框。当我单击该项目时,它应该根据我单击的内容设置编辑文本。但事实并非如此,它在回收视图中显示了第一个值。有人可以帮助我根据我点击的内容获得价值

@SuppressLint("ResourceType")
@OnClick(R.id.button_choose)
void chooseLOV() {

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    LayoutInflater inflater = this.getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.lov_kodepos, null);
    dialogBuilder.setView(dialogView);

    final RecyclerView recyclerView = (RecyclerView) dialogView.findViewById(R.id.rv_lov_kodepos);
    final EditText search  = (EditText) dialogView.findViewById(R.id.editText_lov_search);
    search.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            ArrayList<KodePos> kodePos = new ArrayList<>();
            if (tempData!=null){
                for (KodePos kodePosSatu: data ){
                    String dat = s.toString().toLowerCase();
                    if (kodePosSatu.getPosCamat().toLowerCase().contains(dat)) {
                        kodePos.add(kodePosSatu);
                    }
                }
                tempData = kodePos;
                recyclerView.setAdapter(new KodePosAdapter(tempData));
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });


    API.getKodePos().enqueue(new Callback<ArrayList<KodePos>>() {
        @Override
        public void onResponse(Call<ArrayList<KodePos>> call, Response<ArrayList<KodePos>> response) {
            if (response.code()== 200){
                Log.i("bella", "onResponse: "+response);

                data = response.body();
                tempData = data;
                recyclerView.setHasFixedSize(true);
                recyclerView.addItemDecoration(new DividerItemDecoration(AddCustomerActivity.this, DividerItemDecoration.VERTICAL));
                recyclerView.setLayoutManager(new LinearLayoutManager(AddCustomerActivity.this));
                recyclerView.setAdapter(new KodePosAdapter(data));
            }
        }

        @Override
        public void onFailure(Call<ArrayList<KodePos>> call, Throwable t) {
            Toast.makeText(AddCustomerActivity.this, "Failed", Toast.LENGTH_SHORT).show();

        }
    });

    final AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();

    recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(AddCustomerActivity.this, new RecyclerItemClickListener.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            et_kodepos.setText(data.get(position).getPosKode());
            et_kota.setText(data.get(position).getPosKota());
            et_provinsi.setText(data.get(position).getPosProp());
            et_kecamatan.setText(data.get(position).getPosCamat());
            et_kelurahan.setText(data.get(position).getPosLurah());

            alertDialog.dismiss();
        }
    }));

}

【问题讨论】:

  • 在这里创建您自己的interface。在您的MainActivityFragment 中注册它,您的回收站视图在哪里。将其设置在回收器视图的适配器内,并在单击回收器视图的任何项目时调用具有项目位置的接口方法。
  • 使用position AS et_kodepos.setText(data.get(position).getPosKode());
  • 非常感谢!它解决了我的问题! @ADM
  • @ADM 先生,我能问你一些问题吗?单击项目后如何关闭对话框?

标签: android android-recyclerview onitemclick


【解决方案1】:
 recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(AddCustomerActivity.this, new RecyclerItemClickListener.OnItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {


        et_kodepos.setText(data.get(position).getPosKode());
        et_kota.setText(data.get(position).getPosKota());
        et_provinsi.setText(data.get(position).getPosProp());
        et_kecamatan.setText(data.get(position).getPosCamat());
        et_kelurahan.setText(data.get(position).getPosLurah());

    }

}));

在您的代码中,您每次都分配第 0 个(第一项)元素来编辑文本。

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多