RecycleViewはitem横滑り削除とドラッグを実現します。
4467 ワード
本論文の例では、RecycleViewがitem横滑りの削除とドラッグを実現するための具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
一、依存を追加
ここで使うコントロールは、comp.yanzhenjie.recyclerview.SwipeRecyclerViewです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
一、依存を追加
//
implementation 'com.yanzhenjie.recyclerview:support:1.3.2'
二、レイアウトファイルここで使うコントロールは、comp.yanzhenjie.recyclerview.SwipeRecyclerViewです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.yanzhenjie.recyclerview.SwipeRecyclerView
android:id="@+id/srv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
三、コード実現
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.google.gson.Gson;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yanzhenjie.recyclerview.touch.OnItemMoveListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
SwipeRecyclerView srv; //
List<JavaBean.DataBean> dataAll = new ArrayList<>(); //
MyAdapter myAdapter; //
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
initView();
// , ,
initData();
//
initListener();
}
// TODO 3
private void initListener() {
srv.setItemViewSwipeEnabled(true); //
srv.setLongPressDragEnabled(true); //
//
srv.setOnItemMoveListener(new OnItemMoveListener() {
// Item 。
@Override
public boolean onItemMove(RecyclerView.ViewHolder srcHolder, RecyclerView.ViewHolder targetHolder) {
// Item, Item。
int adapterPosition = srcHolder.getAdapterPosition();
int adapterPosition1 = targetHolder.getAdapterPosition();
// swap , adapter。
Collections.swap(dataAll, adapterPosition, adapterPosition1);
myAdapter.notifyItemMoved(adapterPosition, adapterPosition1);
return true;// true, ,ItemView 。
}
// Item 。
@Override
public void onItemDismiss(RecyclerView.ViewHolder srcHolder) {
// Item , Adapter。
int position = srcHolder.getAdapterPosition();
dataAll.remove(position);
myAdapter.notifyItemRemoved(position);
}
});
}
//TODO 2
private void initData() {
//
OkgoData.getInstance().getDataByOkGo(new DataCallBack() {
@Override
public void getDataJson(String json) {
List<JavaBean.DataBean> data = new Gson().fromJson(json, JavaBean.class).getData();
dataAll.clear();
dataAll.addAll(data);
myAdapter.setNewData(dataAll);
myAdapter.notifyDataSetChanged(); //
}
});
}
//TODO 1
private void initView() {
srv = findViewById(R.id.srv); //
//
DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
srv.addItemDecoration(decoration);
//
myAdapter = new MyAdapter(R.layout.layout_adapter_item, dataAll);
srv.setAdapter(myAdapter);
//
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
srv.setLayoutManager(layoutManager);
}
}
その他の機能の具体的な実現については、RecycleView横滑り削除とドラッグを参照してください。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。