Android ArrayList适配器在listview中获取错误数据
有人知道为什么我在使用listview填充适配器时在AdapterClass中得到错误的数据吗Android ArrayList适配器在listview中获取错误数据,android,json,android-listview,android-arrayadapter,Android,Json,Android Listview,Android Arrayadapter,有人知道为什么我在使用listview填充适配器时在AdapterClass中得到错误的数据吗 public class SchoolAdapter extends ArrayAdapter<SchoolClass> { ArrayList<SchoolClass> schoolclass; private SchoolAdapter schoolAdapter; public SchoolAdapter(Activity activity
public class SchoolAdapter extends ArrayAdapter<SchoolClass> {
ArrayList<SchoolClass> schoolclass;
private SchoolAdapter schoolAdapter;
public SchoolAdapter(Activity activity1, ArrayList<SchoolClass> schoolClassList1){
super(activity1, R.layout.school_adapter, schoolClassList1);
this.activity = activity1;
this.schoolClassList = schoolClassList1;
}
@NonNull
@Override
public View getView (int position, View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = activity.getLayoutInflater();
@SuppressLint({"ViewHolder", "InflateParams"}) View view = inflater.inflate(R.layout.school_adapter, null, false);
school_name = view.findViewById(R.id.school_name);
school_size = view.findViewById(R.id.school_size);
school_btn = view.findViewById(R.id.school_btn);
SchoolClass schoolClass = schoolclass.get(position);
school_name.setText(schoolClass.getSchoolName());
school_size.setText(schoolClass.getSchool_Size());
school_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Grant"+schoolClass.getSchoolName(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
公共类SchoolAdapter扩展了ArrayAdapter{
ArrayList班级;
私立学校适配器;
公立学校适配器(活动activity1,ArrayList学校类列表1){
超级(活动1,R.layout.school_adapter,schoolClassList1);
这个活动=活动1;
this.schoolClassList=schoolClassList1;
}
@非空
@凌驾
公共视图getView(int位置,视图转换视图,@NonNull视图组父级){
LayoutInflater充气器=活动。getLayoutInflater();
@SuppressLint({“ViewHolder”,“InflateParams”})视图=充气器.inflate(R.layout.school_适配器,null,false);
学校名称=view.findviewbyd(R.id.school\u name);
学校大小=view.findViewById(R.id.school\u size);
school\u btn=view.findviewbyd(R.id.school\u btn);
SchoolClass=SchoolClass.get(位置);
school_name.setText(schoolClass.getSchoolName());
school_size.setText(school class.getSchool_size());
school\u btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(上下文,“Grant”+schoolClass.getSchoolName(),Toast.LENGTH_SHORT.show();
}
});
返回视图;
}
}
注意:当我使用listview.setOnItemClickListerner时,我会得到正确的数据,但当我使用任何一个选项时,单击适配器中第一个值的项,我会得到与第五个项类似的结果,当我单击第二个项时,我会得到与适配器中第八个或第九个项相同的结果,当我单击第三个项时,我会得到与适配器中第八个或第九个项类似的结果所有其他的事情看起来都很好,我的代码没有显示任何错误,因为结果已经显示出来了,但它不是正确的结果
注2:我使用json检索列表,但只有当我单击适配器中的项目时,结果才会正确显示,即当我在Toast中得到错误结果时,您的实例(schoolclass)名称与列表名称几乎相同
改变
"schoolClass = schoolClass.get(position);" to
"schoolClass = schoolclass.get(position);"
school class
-是列表;
school class
-是你的项目,我认为你把上/下两级混淆了
Toast.makeText(context, "Grant "+ schoolclass.get(position).getName, Toast.LENGTH_SHORT).show();
公共类SchoolAdapter扩展了ArrayAdapter{
ArrayList班级;
语境
公共学校适配器(上下文上下文,ArrayList学校类列表){
super(上下文、R.layout.school_适配器、school类列表);
这个活动=活动1;
this.schoolClassList=schoolClassList1;
}
@非空
@凌驾
公共视图getView(int位置,视图转换视图,@NonNull视图组父级){
LayoutInflater充气器=活动。getLayoutInflater();
@SuppressLint({“ViewHolder”,“InflateParams”})视图=充气器。充气(R.layout.school_适配器,父,false);
学校名称=view.findviewbyd(R.id.school\u name);
学校大小=view.findViewById(R.id.school\u size);
school\u btn=view.findviewbyd(R.id.school\u btn);
schoolClass=schoolClass.get(位置);
school_name.setText(schoolClass.getSchoolName());
school_size.setText(school class.getSchool_size());
school\u btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(上下文,“Grant”+schoolclass.get(position).getSchoolName(),Toast.LENGTH_SHORT.show();
}
});
返回视图;
}
}
这是什么schoolClass=schoolClass.get(位置)代码>?您可以添加适配器的更多详细信息吗?我已经纠正了这一点,并添加了代码的更多详细信息
public class SchoolAdapter extends ArrayAdapter<SchoolClass> {
ArrayList<SchoolClass> schoolclass;
Context context
public SchoolAdapter(Context context ,ArrayList<SchoolClass> schoolClassList){
super(context, R.layout.school_adapter, schoolClassList);
this.activity = activity1;
this.schoolClassList = schoolClassList1;
}
@NonNull
@Override
public View getView (int position, View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = activity.getLayoutInflater();
@SuppressLint({"ViewHolder", "InflateParams"}) View view = inflater.inflate(R.layout.school_adapter, parent, false);
school_name = view.findViewById(R.id.school_name);
school_size = view.findViewById(R.id.school_size);
school_btn = view.findViewById(R.id.school_btn);
schoolClass = schoolclass.get(position);
school_name.setText(schoolClass.getSchoolName());
school_size.setText(schoolClass.getSchool_Size());
school_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Grant"+ schoolclass.get(position).getSchoolName(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
}