将RecyclerView中的项目移动到另一个位置

尼古拉·基亚里(Nicola Chiari)

我从Firebase数据库中获取了RecyclerView中的项目列表。我想通过长按和拖动来实现RecyclerView内部项目的移动。(类似于Google的记事应用“保持”)

我已经看过其他一些类似的问题,但是找不到适合我需求的解决方案。

以下是一些代码示例。

MainActivity(onCreate)

 mRecycler = (RecyclerView) findViewById(R.id.messages_list);
    mRecycler.setHasFixedSize(true);



    mManager = new LinearLayoutManager(getApplicationContext());
    mManager.setReverseLayout(false);
    mManager.setStackFromEnd(false);
    mRecycler.setLayoutManager(mManager);


    findViewById(R.id.fab_new_post).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(RecordActivity.this, NewRecordActivity.class));
        }
    });

    // Set up FirebaseRecyclerAdapter with the Query

    mAdapter = new FirebaseRecyclerAdapter<Record, RecordViewHolder>(Record.class, R.layout.item_record, RecordViewHolder.class, mDatabase.child("user-record").child(getUid())) {
        @Override
        protected void populateViewHolder(final RecordViewHolder viewHolder, final Record model, final int position) {
            final DatabaseReference postRef = getRef(position);

            // Set click listener for the whole post view
            final String postKey = postRef.getKey();
            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Launch RecordDetailActivity
                    Intent intent = new Intent(getApplicationContext(), RecordDetailActivity.class);

                    //MANDARE TESTO A POSTDETAILACTIVITY
                    intent.putExtra(RecordDetailActivity.EXTRA_POST_KEY, postKey);
                    intent.putExtra(RecordDetailActivity.TITLE, model.title);
                    intent.putExtra(RecordDetailActivity.BODY, model.body);
                    intent.putExtra(RecordDetailActivity.DATE, model.date);
                    intent.putExtra(RecordDetailActivity.NOTE, model.note);
                    intent.putExtra(RecordDetailActivity.COLOR, model.color);
                    startActivity(intent);
                }
            });
            // Bind Record to ViewHolder, setting OnClickListener for the star button

            viewHolder.bindToPost( model);

RecordViewHolder

public class RecordViewHolder extends RecyclerView.ViewHolder {

public TextView titleView;
public TextView bodyView;
public TextView dateView;
public TextView noteView;
public TextView colorView;
public CardView cardView;


public RecordViewHolder(View itemView) {
    super(itemView);

    titleView = (TextView) itemView.findViewById(R.id.post_title);
    bodyView = (TextView) itemView.findViewById(R.id.post_body);
    dateView = (TextView) itemView.findViewById(R.id.record_item_date);
    noteView = (TextView) itemView.findViewById(R.id.record_item_note);
    colorView = (TextView) itemView.findViewById(R.id.record_item_color);
    cardView = (CardView) itemView.findViewById(R.id.record_item_card);
}

public void bindToPost(Record record) {
    titleView.setText(record.title);
    bodyView.setText(record.body);
    dateView.setText(record.date);
    noteView.setText(record.note);
    colorView.setText(record.color);
}
弗兰克·范普菲伦

由于您使用的是FirebaseUI FirebaseRecyclerAdapter,因此数据将按照从数据库中检索的顺序显示。

这意味着要对数据进行重新排序,您将需要创建新查询向数据中添加可用于设置顺序的属性。后者的一种常见方法是index在记录中添加一个属性。然后,当用户将一条记录拖到另一个位置时,您将“只是”必须更新所有受影响记录的索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数组元素从一个数组位置移动到另一个位置

将切片项目从一个位置移动到另一个位置

在Java中将对象从一个位置移动到另一个位置

将默认Docker容器移动到磁盘上的另一个位置

Angular 2操作DOM-在保留功能的同时将组件从一个位置移动到另一个位置

有条件将数组元素从一个位置移动到另一个位置

如何将隐形Recaptcha徽章移动到页面上的另一个位置

通过纯JS将HTML表单从一个位置移动到另一个位置(然后再返回)

选中复选框后如何将项目移动到最后一个位置?(RecyclerView,ViewHolder)

Flutter:将小部件移动到另一个位置

Vue拼接(将数组项移动到数组中的另一个位置)未更新DOM

JS-如何将JSON对象的项目移动到另一个位置

XCode / OSX是如何做到的?将XCode项目移动到另一个位置。XCode自动知道它的位置

使用XSLT 2将元素从一个位置移动到另一个位置

将对象从一个位置统一移动到另一个位置

如何将具有特定扩展名的任何文件从一个位置批量移动到另一个位置?

将(用户输入)文件移动到另一个位置

如何使用sed将线段移动到另一个位置?

将快照包移动到另一个位置/目录

如何使用bash命令将一组目录从一个位置移动到另一个位置

如何将整个折叠级别移动到 Notepad++ 中的另一个位置?

将 XAML 元素从一个位置移动到另一个位置

将整行从一个位置移动到另一个位置

XSLT 将节点从搜索位置移动到另一个位置

将数量从一个位置部分移动到另一个位置和另一个位置的数据库模型

将文件从一个位置移动到另一个位置并排除子文件夹

C# - 如何将一个节点及其子节点移动到 XML 文档中的另一个位置?

将查询结果移动到另一个位置

如何将内容移动到 DOM 中的另一个位置,然后将其放回原处?