2015-01-05 30 views
0

現在我要繼續使用Listview,我應該刪除特定的行,我在這裏選擇我選擇行的按鈕在每一行中的幫助我有一個按鈕,如果我點擊應刪除第2行第2行。如何從列表視圖中刪除當前行

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都被分配正確的,但它從底部

默認消除I如何解決這個有沒有其他的apporach來解決這個問題。

+0

檢查this.'http://stackoverflow.com/questions/27498226/how-to-perform- update-and-delete-operation-in-listview-item-row-while-click-the'我希望這會對你有所幫助。 – Steve

回答

1

基本上有兩個步驟,你需要遵循;

  1. 從列表中刪除行數據。

    應該有一個列表,其中包含您在列表視圖中顯示的數據。首先你需要從這個列表中刪除數據。

  2. 通知適配器。

    您的適配器連接到數據列表。在您的數據列表上實施更改後,您需要通知適配器這些變化意味着什麼;

    adapter.notifydatasetchanged()

    後調用此方法適配器將數據加載到列表視圖不包含已刪除的項目。

+0

查看'ArrayAdapter.remove()'方法 – pskink

+0

你是如此聰明pskink爲什麼你不應該放置一個答案可能我們可以得到一個學習 –

+0

即使我有一個列表中的值嘗試通過從列表中刪除選定的數據,但沒有改變 – Manoj

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(); 
     } 
    }; 

希望它能幫助.... :)

+0

沒有兄弟其實我做了這個adapter.notifyDataSetChanged();我沒有在代碼中提到,但我的問題是,當我刪除它從底部刪除不是特定的位置,選擇 – Manoj

+0

@Manoj好了你看看或試圖在你的for循環進行更改嗎? – Umair

+0

上面是我的代碼請看看它如果我錯了PLZ指導我兄弟 – Manoj