2017-09-29 1 views
0

からRecyclerViewアダプタアイテムを削除します。Quote ListクラスQuoteListFragmentがあります。私はこのアクティビティ

private ArrayList<Quote> quotes; 
quotes = response.body(); 
NewQuoteAdapter adapter = new NewQuoteAdapter(getContext(), response.body()); 
mQuoteList.setAdapter(adapter); 

のように、サーバーからアダプターにデータをロードしていますし、RecyclerViewアダプタは、私がQuoteViewFragmentで詳細に項目をdisplyingいNewQuoteAdapter

と呼ばれる場所。私はこのフラグメントでdeleteと呼ばれるボタンを実装しました。フラグメントからその引用を削除するチャンスをユーザに与えたいと思います。リストに戻るとリストから消えます。 これをどのように達成できるかわかりません。誰かが私にそれを行うための解決策を与えることができるかどうか私に教えてください。おかげ

+0

データの表示にシリアライザを使用していますか?私は解決策を与えることができるようにここでコードを共有する必要があります。ペーストビンを行う。 –

+0

[RecyclerView-Androidのアイテムを削除する](https://stackoverflow.com/questions/36858086/remove-an-item-in-recyclerview-android) – HEATH3N

+0

@BilalShahid私はそれにQuoteというシリアライザを使用しています。おかげで – Priya

答えて

2

はよくあなたは、リスト、およびアダプターを持っている、とrecyclerview

ArrayList<String> myQuoteList = new ArrayList<String>(); 
MyCustomAdapter adapter = new MyCustomAdapter(myQuoteList); 
rcvQuotes.setAdapter(adapter); 

は、その後、あなたの削除にあなただけのインターフェイスを作る//

private void deleteAtIndex(int index){ 
     myQuoteList.remove(index); 
     adapter.notifyDataSetChanged(); 
} 

を行うことができます。

public interface fragmentCallback{ 
    boolean onQuoteDeleted(Quote deleteQuote); 
} 

は、あなたの活動を持っているインターフェイスを実装:

myActivity implements fragmentCallback{ 
    public boolean onQuoteDeleted(Quote deletedQuote){ 
     if(myQuotelist.contains(deleteQuote){ 
       myQuoteList.remove(deleteQuote); 
       adapter.notifyDataSetChanged(); 
     } 
    } 
} 

その後、フラグメントに

myFragment.setQuote(selectedQuote); 

simpleyフラグメントの内側だけで操作を行います。

 @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     try{ 
      mFragmentCallback = (IFragmentCallback) context; 

     }catch (Exception ex){ 
      A35Log.e(TAG, "Parent Context does not implement fragmentCallback"); 

     } 
    } 

public void setQuote(Quote showQuote){ 
    mSelectedQuote = showQuote; 
} 

btnDelete_onClick(){ 
    if(mFragmentCallback != null){ 
     mFragmentCallback.onDeleteQuote(mSelectedQuote); 
    } 
} 

あなたがでそれを処理することができます選択されたtのインデックスまたは最後の索引や最初の索引を使用して、行項目に長いタッチ・リスナーまたはごみ箱を追加することができます。どのようにインデックスを取得するかはあなた次第です。

それだけです、それはすべてです。

+0

編集した質問を確認してください。ありがとう – Priya

+0

こんにちはPriya、私は何がなぜ変わるのか分かりません。あなたは値を保持する方法を尋ねていますか?選択したインデックスは、前述のように常に追跡することができます。 "currentSelectedItem"または "selectedIndex"をクリックしてフラグメント引用符オブジェクトに渡して表示します。彼らが "削除"をクリックした場合、単にdeleteQuoteのコールバックインターフェイスです。方法を示すために私の答えを更新します。 – Sam

0
Arraylist.remove(index) 

recycleradapter.notifydatasetchanged() 
+0

編集した質問を確認してください。ありがとう – Priya

0

引用例えばquotesListのクリックされた項目 例えばインデックス= 4 リストのindexを取得します。

quotesList.remove(index); 
adapter.notifyDataSetChanged(); 
+0

私の編集した質問を確認してください。ありがとう – Priya

関連する問題