android - 如何以编程方式更改 RecyclerView 中项目的位置?

标签 android android-recyclerview linearlayoutmanager

有没有办法以编程方式使用 LinearLayoutManager 将特定项目移动到 RecyclerView 中的特定位置?

最佳答案

你可以这样做:

一些 Activity/fragment/任何:

List<String> dataset = new ArrayList<>();
RecyclerView recyclervSomething;
LinearLayoutManager lManager;
MyAdapter adapter;

//populate dataset, instantiate recyclerview, adapter and layoutmanager

recyclervSomething.setAdapter(adapter);
recyclervSomething.setLayoutManager(lManager);

adapter.setDataset(dataset);

我的适配器:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> dataset;
    public MyAdapter() {}
    //implement required methods, extend viewholder class...

    public void setDataset(List<String> dataset) {
        this.dataset = dataset;
        notifyDataSetChanged();
    }

    // Swap itemA with itemB
    public void swapItems(int itemAIndex, int itemBIndex) {
        //make sure to check if dataset is null and if itemA and itemB are valid indexes.
        String itemA = dataset.get(itemAIndex);
        String itemB = dataset.get(itemBIndex);
        dataset.set(itemAIndex, itemB);
        dataset.set(itemBIndex, ItemA);

        notifyDataSetChanged(); //This will trigger onBindViewHolder method from the adapter.
    }
}

关于android - 如何以编程方式更改 RecyclerView 中项目的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698646/

相关文章:

java - Android 完整图像,带有来自 php mysql 的 recyclerview、cardview 和 volley

android - RecyclerView LinearLayout 管理器在横向模式下总是返回 -1 - findLastCompletelyVisibleItemPosition()

带有 fragment 和底部导航栏的 Android FloatingActionButton

android - 如何在 Oreo 中获取正在运行的应用程序列表?

java - 我怎样才能同步类,以便我可以从 UI 线程和后台线程使用?

android - 具有多种 View 类型的 CursorRecyclerViewAdapter

java - R.java 错误

android - 如何创建可扩展的粘性列表标题 Recyclerview android

android - 添加到 RecyclerView 的项目未显示在底部

android - 添加的 View 将 RecyclerView 作为父 View ,但 View 不是真正的 subview