android - 从片段上的 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 进行更改,但仍然没有错误。我需要帮助
解决方案
推荐阅读
- azure - Azure 搜索服务不显示索引
- javascript - 无法在角度材料自动完成中从 [displayWith] 调用另一个方法
- java - 带有代理的无限循环和 StackOverflow
- ios - 在 XCode 9.2 中使用 IOS SDK 13
- python - PySpark - 根据列的类型将列分解为行
- java - 使用 Stream 从列表中查找匹配昂贵条件的最后一个元素
- c++ - 尝试使用标头 C++ 时遇到问题
- css - CSS计算指数除法
- java - 无法将具有类“java.lang.Long”的对象“20001”转换为类“java.util.Optional”
- vue.js - 使用 Vue 和 Cypress 进行测试时出现 Mirage 未定义错误(未定义路由)