ArrayList适配器在列表视图中获取错误的数据

问题描述 投票:0回答:1

任何人都知道为什么我在使用listview填充适配器时为什么在AdapterClass中得到错误的数据,这是我正在使用的代码

public class SchoolAdapter extends ArrayAdapter<SchoolClass> {
    ArrayList<SchoolClass> schoolclass;

    private SchoolAdapter schoolAdapter;

    private SchoolClass schoolClass;

    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.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中得到错误的结果)时,结果才正确显示

任何人都知道为什么使用列表视图填充适配器时,为什么我的AdapterClass中的数据错误,这是我使用公共类SchoolAdapter扩展ArrayAdapter {... ...]的代码。 [

您的实例(学校班级)名称与列表名称几乎相同。
更改
"schoolClass = schoolClass.get(position);" to "schoolClass = schoolclass.get(position);"

schoolclass-是列表;schoolClass-是您的项目,我认为您混淆了上/下]

android json android-studio android-listview android-arrayadapter
1个回答
0
投票
"schoolClass = schoolClass.get(position);" to "schoolClass = schoolclass.get(position);"

schoolclass-是列表;schoolClass-是您的项目,我认为您混淆了上/下]

© www.soinside.com 2019 - 2024. All rights reserved.