如何从listview中删除当前行

时间:2015-01-05 13:24:42

标签: android listview adapter

现在我继续使用Listview,因为我应该删除我在这里选择的特定行我在每行按钮的帮助下选择行我有一个按钮如果我点击第二行按钮第二行应该是删除。

public class Adapter extends ArrayAdapter<Data> {

 private final View.OnClickListener deleteButton = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          selected = (Data)v.getTag();

}}


public class DetailsFragment extends Fragment implements Adapter
        .Listener {


  @Override
    public void Deleted(Data list) {

        int itemCount = adapter.getPosition(list);
        for(int i=0;i<adapter.getCount();i++) {
         Data present=     adapter.getItem(i);
            if(itemCount==i) {
                adapter.remove(present);

            }

        }
}

其他方法:

@Override
    public void Deleted(Data list) {


        for(int i=0;i<adapter.getCount();i++) {
         Data present=     adapter.getItem(i);
            if(Adapter.selected ==present) {
                adapter.remove(present);

            }

        }
}

尝试了以下几个链接:

http://wptrafficanalyzer.in/blog/deleting-selected-items-from-listview-in-android/

http://www.androidbegin.com/tutorial/android-delete-multiple-selected-items-listview-tutorial/

我的问题是,当我尝试删除从列表底部删除的所选行时。

这里我的数据位置,id一切都分配正确但默认从底部删除

如何解决这个问题还有其他任何方法可以解决这个问题。

2 个答案:

答案 0 :(得分:1)

基本上,您需要遵循两个步骤;

  1. 从列表中删除行数据。

    应该有一个列表,其中包含您在listview中显示的数据。首先,您需要从此列表中删除数据。

  2. 通知适配器。

    您的适配器已与数据列表连接。在数据列表上实施更改后,您需要通知适配器这些更改,这意味着;

    adapter.notifydatasetchanged()

    调用此方法后,适配器会将数据重新加载到listview,而不会删除已删除的项目。

答案 1 :(得分:0)

根据您在此处发布的教程之一,请参阅此处,了解数据的删除方式。删除日期后,您必须像教程一样通知适配器,而您没有这样做。并且还看看你的循环

/** Defining a click event listener for the button "Delete" */
    OnClickListener listenerDel = new OnClickListener() {
        @Override
        public void onClick(View v) {
            /** Getting the checked items from the listview */
            SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions();
            int itemCount = getListView().getCount();

            for(int i=itemCount-1; i >= 0; i--){
                if(checkedItemPositions.get(i)){
                    adapter.remove(list.get(i));
                }
            }
            checkedItemPositions.clear();
            adapter.notifyDataSetChanged();
        }
    };

希望它有帮助.... :)