从Activity中删除RecyclerView适配器项

时间:2017-09-29 18:31:41

标签: java android

我有Quote List类QuoteListFragment。我从服务器加载适配器中的数据,如此

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

和RecyclerView Adapter称为NewQuoteAdapter

我正在使用QuoteViewFragment详细显示项目。我在这个片段中实现了一个名为“delete”的按钮,我希望让用户有机会从片段中删除该引用,这样当用户返回列表时,它就会从列表中消失。 我不知道如何实现这一目标。如果有人能为我提供解决方案,请告诉我。感谢

3 个答案:

答案 0 :(得分: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);

片段里面只做:

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

您可以通过选定的行索引,最后一个索引或第一个索引来处理它,也可以将长触摸侦听器或垃圾桶添加到行项目中。你如何获得索引取决于你。

就是这样,就是它的全部内容。

答案 1 :(得分:0)

Arraylist.remove(index)

recycleradapter.notifydatasetchanged()

答案 2 :(得分:0)

获取点击项目的index 例如index = 4 引用列表,例如quotesList。

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