我正在尝试做一个待办事项列表,当我在列表上添加新元素时,查看存储数据的文件会自动保存更改。
当我调用方法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>