Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将recyclerview与数据库集成_Java_Android_Database_Arraylist_Swap - Fatal编程技术网

Java 将recyclerview与数据库集成

Java 将recyclerview与数据库集成,java,android,database,arraylist,swap,Java,Android,Database,Arraylist,Swap,通过上面的代码,我可以交换recyclerview中的项,但现在的问题是,我还想对数据库进行相同的相应更改。 怎么办 Queue从数据库接收所有数据 Queue是用于设置recyclerview适配器的arraylist 问候 谢谢适配器: @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewH

通过上面的代码,我可以交换recyclerview中的项,但现在的问题是,我还想对数据库进行相同的相应更改。 怎么办

Queue从数据库接收所有数据 Queue是用于设置recyclerview适配器的arraylist

问候 谢谢

适配器:

        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            Collections.swap(queuee, viewHolder.getAdapterPosition(), target.getAdapterPosition());

            // and notify the adapter that its dataset has changed
            adapterr.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
            return true;
        }

在我看来,您可以在活动中使用
OnDestroy
方法进行此操作。具体来说,首先,您可以从适配器获取所有数据,然后删除数据库中的数据,最后,您可以再次保存从适配器获取的数据。此时,您的数据序列就是您想要的,并且这种方式很容易编码。我宁愿你不要
在移动过程中更新数据库,因为在拖动过程中更新太频繁,并且操作所有数据比数据库中的两个数据更容易。

这在很大程度上取决于您拥有的数据库类型,以及您在数据库上编写的方法
    public class QueueAdapter extends RecyclerView.Adapter<QueueAdapter.MyViewHolder> {
    private Context mContext;
    public ArrayList<Music> queue;
    MediaPlayer mPlayer = new MediaPlayer();



    public class MyViewHolder extends RecyclerView.ViewHolder {


        public TextView title,tt,artist;
        public Button play,stop;
        public ImageButton option;

        public MyViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.songtitle1);
            artist = (TextView)view.findViewById(R.id.artist1);
            //  play = (Button) view.findViewById(R.id.play);
            // stop = (Button) view.findViewById(R.id.stop);
            // tt = (TextView) view.findViewById(R.id.song_name);
            option = (ImageButton) view.findViewById(R.id.option1);




        }
    }

    public QueueAdapter(Context mContext, ArrayList<Music> queue) {
        this.mContext = mContext;
        this.queue = queue;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.queue_card, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        Music mu1 = queue.get(position);
        holder.title.setText(mu1.getTitle());
        holder.artist.setText(mu1.getArtist());
        final String link =mu1.getUrl();
        final String SongName = mu1.getTitle();


    }




    @Override
    public int getItemCount() {
        return queue.size();
    }



    public void removeItem(int position) {
        queue.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position, queue.size());
    }


}
 recyclerView = (RecyclerView) findViewById(R.id.recyclerqueue);
    recyclerView.setHasFixedSize(true);

    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());





    adapterr = new QueueAdapter(this,queuee);
    recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));

    // adapterr.
    recyclerView.setAdapter(adapterr);
   initSwipe();