Android中自定义ListView的奇怪错误

时间:2014-03-05 01:19:58

标签: android listview

我已经在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,显示错误已修复。但是每当我删除一个项目时我都需要这样做。

0 个答案:

没有答案