我已经在http://www.tutecentral.com/android-swipe-listview/上恢复了ListView代码。 我已经根据我的用法进行了调整。它在一定程度上起作用。我解释一下:
我在列表中添加了6个元素。这行得通 ! 我可以用按钮删除元素。 它仅适用于前2个元素。之后(删除2个第一个元素):元素被很好地删除了列表(List),但显示在此列表中不对应。此外,已删除的元素已被阻止。
public class ItemAdapter extends ArrayAdapter<Task> {
List<Task> data;
Context context;
int layoutResID;
final Handler handle = new Handler();// For the threads
Runnable runab;
public ItemAdapter(Context context, int layoutResourceId, List<Task> data) {
super(context, layoutResourceId, data);
this.data = data;
this.context = context;
this.layoutResID = layoutResourceId;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
TaskHolder holder = null;
View rowBack = convertView;
holder = null;
if(rowBack == null)
{
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
rowBack = inflater.inflate(layoutResID, parent, false);
holder = new TaskHolder();
holder.deleteButton =(Button)rowBack.findViewById(R.id.swipe_button1);
rowBack.setTag(holder);
}
else
{
holder = (TaskHolder) rowBack.getTag();
}
Task itemdata = data.get(position);
title.setText(itemdata.getName());
holder.deleteButton.setOnClickListener(new View.OnClickListener() {
int position1 = position;
@Override
public void onClick(View v) {
if(position1 != -1 && position1 < data.size()) {
remove( data.get(position1) );
notifyDataSetChanged();
}
}
});
return rowBack;
}
public List<Task> getData() {
return data;
}
public void setData(List<Task> data) {
this.data = null;
this.data = data;
}
static class TaskHolder {
TextView name;
TextView priority;
TextView deadline;
TextView time;
Button deleteButton;
Button statButton;
Button settingButton;
Button stopButton;
}
}
我知道很多人已经提出过这样的问题,但在这里,这不是一回事。
我不知道这是否正常,但我的列表中有6个元素。仅为位置0,1,2,3调用getView方法。 (我在LogCat上看到它);我从来没有在Logcat上看到第4和第5位;
其他一点,当我转动手机时,应用程序返回onCreate中的ActivityMain,显示错误已修复。但是每当我删除一个项目时我都需要这样做。