短视频软件开发,RecyclerView实现拖拽效果
短视频软件开发,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实现拖拽效果, 更多内容欢迎关注之后的文章
浙公网安备 33010602011771号