短視訊軟體開發,RecyclerView實現拖拽效果

zhibo系統開發發表於2022-07-18

短視訊軟體開發,RecyclerView實現拖拽效果

RecyclerView介面卡監聽ItemTouchHelper的回撥,自定義RecyclerView介面卡程式碼TestAdapter如下:

package com.example.myapplication;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.Collections;
import java.util.List;
public class TestAdapter extends RecyclerView.Adapter<TestAdapter.TestViewHolder> implements ItemMoveCallback {
    private Context mContext;
    private List<String> mTestList;
    public TestAdapter(Context mContext, List<String> testList) {
        this.mContext = mContext;
        this.mTestList = testList;
    }
    @Override
    public TestViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new TestViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_test, null, false));
    }
    @Override
    public void onBindViewHolder(final TestViewHolder holder, final int position) {
        holder.tvTest.setText(mTestList.get(position));
    }
    @Override
    public int getItemCount() {
        return mTestList.size();
    }
    @Override
    public void onItemMove(int fromPosition, int toPosition) {
        if (fromPosition < toPosition) {
            for (int i = fromPosition; i < toPosition; i++) {
                Collections.swap(mTestList, i, i + 1);
            }
        } else {
            for (int i = fromPosition; i > toPosition; i--) {
                Collections.swap(mTestList, i, i - 1);
            }
        }
        notifyItemMoved(fromPosition, toPosition);
    }
    static class TestViewHolder extends RecyclerView.ViewHolder implements ItemHolderMoveCallback{
        private TextView tvTest;
        public TestViewHolder(View itemView) {
            super(itemView);
            tvTest = (TextView) itemView.findViewById(R.id.tv_test);
        }
        @Override
        public void onItemHolderMoveStart() {
            tvTest.setTextSize(40);
            itemView.setBackgroundColor(Color.RED);
        }
        @Override
        public void onItemHolderMoveEnd() {
            tvTest.setTextSize(32);
            itemView.setBackgroundResource(R.color.colorAccent);
        }
    }
}



TestAdapter與RecyclerView繫結:

        mRvTest.setLayoutManager(gridLayoutManager);
        mTestList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            mTestList.add("測試文字" + i);
        }
        mTestAdapter = new TestAdapter(this, mTestList);
        mRvTest.setAdapter(mTestAdapter);


佈局檔案中的程式碼:

  <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


以上就是短視訊軟體開發,RecyclerView實現拖拽效果, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2906221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章