调用getChildAt方法时,ListView返回null

时间:2020-08-31 13:58:48

标签: java android

我正在尝试做一个待办事项列表,当我在列表上添加新元素时,查看存储数据的文件会自动保存更改。

当我调用方法listView.getChildAt(i)时出现问题,因为它返回null。

在列表上添加新元素并调用adapter.notifyDataSetChanged()方法之后,将调用该函数。

public void save(){
        int i = 0;
        View row= null;
        CheckBox x;
        File archive = new File(getExternalFilesDir(null),"file.txt");
        //list has been declared before
        try{
            PrintWriter fOUT = new PrintWriter(archive);
            for(String article : list){

                row = (View) listView.getChildAt(i);
                x = (CheckBox) row.findViewById(R.id.check);

                if(x.isChecked())
                {
                    fOUT.println(article+";1");
                }
                else
                {
                    fOUT.println(article+";0");
                }
                i++;
            }
            fOUT.close();
            MediaScannerConnection.scanFile(this,new String[]{archive.getPath()},null,null);
        }
        catch(IOException ignored){
        }
    }

这里有ListItem的XML布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minHeight="40dp"
    >
    <TextView
        android:id="@+id/testo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="5dp"
        android:layout_toStartOf="@+id/check"
        android:shadowColor="#000000"
        android:shadowRadius="5"
        android:textColor="@color/bianco"
        android:textSize="15sp"
        android:textStyle="bold" />

    <ImageButton
        android:id="@+id/bottone"
        android:layout_width="28dp"
        android:layout_height="28dp"
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true"
        android:onClick="rimuovi"
        android:background="@drawable/my_icon_delete" />
    <CheckBox
        android:id="@+id/check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/bottone"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:onClick="formattazioneTesto"
        android:checked="false"/>
</RelativeLayout>

0 个答案:

没有答案