首页 > 解决方案 > 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 中得到错误结果时,结果才会正确显示

标签: androidjsonandroid-listviewandroid-arrayadapter

解决方案



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;
    }
}


推荐阅读