我在这篇文章的帮助下以某种方式实现了循环视图,现在我的要求是在运行时从这个循环视图中删除一行。
链接- http://treyrobinson.net/blog/android-l-tutorials-part-3-recyclerview-and-cardview/
请帮帮我。
谢谢。
发布于 2014-10-31 19:25:34
因为我们不知道你的广告怎么样,并且给出了链接中的信息,所以你可以在适配器中创建一个删除对象的方法:
public void removeItem(int position) {
mData.remove(position);
notifyItemRemoved(position);
}
你可以从你的活动中获得所有这些,比如:
((MyRecyclerAdapter)myRecyclerView.getAdapter()).removeItem(position);
发布于 2015-10-29 17:49:13
我能够让它像这样工作。
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
//Remove swiped item from list and notify the RecyclerView
datalist.remove(viewHolder.getAdapterPosition());
// this line animates what happens after delete
adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
Snackbar.make(recyclerView, "delete successful", Snackbar.LENGTH_LONG).show();
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
};
并将上面的内容设置为回收器视图,如下所示。
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
发布于 2016-03-06 04:07:03
如果您想通过单击某一行来删除它,我认为更简洁的方法是在ViewHolder中实现onClicks。然后在适配器上实现一个公共的remove方法,然后通过onCreateViewHolder方法将适配器传递给ViewHolder。
应该是这样的:
-示例
适配器:
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<Object> mDataset; // This is the list of items to be shown
//Here you would write the rest of your Adapter code
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View itemView = mInflater.inflate(R.layout.item_recyclerview_round, parent, false);
return new RoundViewHolder(itemView, this);
}
public void removeItem(int position) {
mDataSet.remove(position);
notifyItemRemoved(position);
// Add whatever you want to do when removing an Item
}
}
ViewHolder:
public class MyViewHolder RecyclerView.ViewHolder
implements View.OnClickListener {
private MyAdapter myAdapter;
// Here you would write the rest of your ViewHolder code
public MyViewHolder (View itemView, MyAdapter myAdapter){
super(itemView);
this.myAdapter = myAdapter;
// Here you would write the rest of your constructor
}
public void onClick(View view) {
myAdapter.removeItem(getAdapterPosition());
}
这对我很管用。我不知道是否可以提高性能(可能),但这是我发现的最简单的方法。
我希望它能帮上忙。
https://stackoverflow.com/questions/26673444
复制相似问题