首页 > 解决方案 > 从片段上的 onBindViewHolder 中的 recyclerview 获取值

问题描述

我在片段上有recyclerview,我想从editText和recyclerview上的微调器获取值,我尝试使用相同的代码进行活动并运行没有错误,但在片段上总是错误nullpointerexception。

片段中 listAdapter 的这段代码

public class ListAdapter extends RecyclerView.Adapter<OneFragment.ListAdapter.ViewHolder>
    {

        private ArrayList<DataQuestionGrading> dataList;
        private List<DataQuestionGrading> filterlist = null;

        public ListAdapter(ArrayList<DataQuestionGrading> data)
        {
            this.dataList = data;
            this.filterlist = new ArrayList(dataList);
        }

        public class ViewHolder extends RecyclerView.ViewHolder
        {
            TextView textQues;
            TextView idQues;
            TextView persenQue;
            EditText txtPart;

            public ViewHolder(View itemView)
            {
                super(itemView);
                this.textQues = (TextView) itemView.findViewById(R.id.gradingPart);
                this.idQues = (TextView) itemView.findViewById(R.id.idGrading);
                this.persenQue = (TextView) itemView.findViewById(R.id.persenGrading);
                this.txtPart = (EditText) itemView.findViewById(R.id.noteGrading);
            }
        }

        @NonNull
        @Override
        public ListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_grading, parent, false);

            OneFragment.ListAdapter.ViewHolder viewHolder = new OneFragment.ListAdapter.ViewHolder(view);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder(final ListAdapter.ViewHolder holder,final int position) {

            holder.idQues.setText(dataList.get(position).getIdQue());
            holder.persenQue.setText(dataList.get(position).getPercentase());
            holder.textQues.setText(dataList.get(position).getPart_name());
            ViewGroup rootView = (ViewGroup) getView();
            for (int i = 0; i < dataList.size(); i++){
                View view = rootView.getChildAt(i);
                EditText notes = (EditText) view.findViewById(R.id.noteGrading);
                TextView ids = (TextView) view.findViewById(R.id.idGrading);
                TextView persens = (TextView) view.findViewById(R.id.persenGrading);
                kondisi = (Spinner) view.findViewById(R.id.kondisiGrading);

                //String pilihkondisi = kondisi.getSelectedItem().toString();
                kondisi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long itemID) {

                        if(position != 0) {
                            if(kondisi.getItemAtPosition(position).toString() != null) {
                                pilihkondisi = adapterView.getItemAtPosition(position).toString();
                            }
                        }
                        //Toast.makeText(getActivity(), "Selected"+item, Toast.LENGTH_SHORT).show();


                    }
                    @Override
                    public void onNothingSelected(AdapterView<?> adapterView) {

                    }
                });
                String cek;

                if(pilihkondisi.equals("OKE")){
                    cek = "1";
                }else if (pilihkondisi.equals("BERMASALAH")){
                    cek = "2";
                }else{
                    cek = "3";
                }

                String note = notes.getText().toString();
                String not;
                if(note.matches("")){
                    not = "-";
                }else{
                    not = note;
                }
                String id = ids.getText().toString();
                String persen = persens.getText().toString();

                JSONObject part = new JSONObject();
                try {
                    part.put("id", id);
                    part.put("condition",not);
                    part.put("percentage",persen);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                jsonChek1.put(part);
            }

        }

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

    }

这是对活动的代码工作,但是当我在 getText 或 setOnItemSelected 时使用片段错误时,我尝试使用 ViewGroup 进行更改,但仍然没有错误。我需要帮助

标签: androidandroid-recyclerview

解决方案


推荐阅读