android - ArrayList 适配器在列表视图中获取错误数据
问题描述
任何人都知道为什么我在使用 listview 填充适配器时在我的 AdapterClass 中得到错误的数据这是我正在使用的代码
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;
}
}
注意:当我使用 listview.setOnItemClickListerner 时,我得到了正确的数据,但是当我使用任何单击适配器中第一个值的项目时,我得到的结果类似于第 5 个项目,当我单击第二个项目时同样的事情,当我单击第三项时,我得到的结果类似于适配器中的第 8 项或第 9 项,其他一切似乎都很好,我的代码没有显示任何错误,因为结果已显示,但它不是正确的结果注 2:我正在使用 json 检索列表,但只有当我单击适配器中的项目时,当我在 Toast 中得到错误结果时,结果才会正确显示
解决方案
Toast.makeText(context, "Grant "+ schoolclass.get(position).getName, Toast.LENGTH_SHORT).show();
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;
}
}
推荐阅读
- jquery - 如何通过解析 HTML 平台 Node.js 使用 jQuery 准确获取包含的字段
- lua - Roblox 2009 Lua:获取 Loadstring 的错误
- c# - Entity Framework Core 执行多次
- php - 首先使用 NGINX 和 PHP + 用户授权进行文件上传
- java - 如何让任务取消它自己的未来?
- css - 如何在我的网站上跨所有页面检测未使用的 CSS?
- bash - 在 jenkins 配置 shell 中为双引号表达式添加了额外的单引号
- google-cloud-dataflow - 写入步骤完成后流式传输管道发布到 pubsub
- c++ - 使用虚拟变量在循环内切片 std::vector 的最佳方法
- rust - 在 Rust 中实现链表时如何复制原始指针?