Android RecyclerView implements click entry deletion
- 2021-10-24 23:50:54
- OfStack
This article example for everyone to share RecyclerView to achieve click item deletion specific code, for your reference, the specific content is as follows
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mButton1;
private Button mButton2;
private Button mButton3;
private Button mButton4;
private Button mButton5;
private RecyclerView mRecyclerView;
private ArrayList<String> mList;
private LinearLayoutManager mLinearLayoutManager;
private RvAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
mList = new ArrayList<>();
for (int i=0;i<20;i++){
mList.add(i+"item");
}
mAdapter = new RvAdapter(mList, this);
mRecyclerView.setAdapter(mAdapter);
// Set the dividing line
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
// Set the default layout
mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mAdapter.setOnItemClickListener(new RvAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
mAdapter.remove(position);
}
@Override
public void onItemLongClick(int position) {
mAdapter.remove(position);
}
});
}
private void findViews() {
mRecyclerView = findViewById(R.id.rv);
mButton1= findViewById(R.id.b1);
mButton2= findViewById(R.id.b2);
mButton3= findViewById(R.id.b3);
mButton4= findViewById(R.id.b4);
mButton5= findViewById(R.id.b5);
mButton1.setOnClickListener(this);
mButton2.setOnClickListener(this);
mButton3.setOnClickListener(this);
mButton4.setOnClickListener(this);
mButton5.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.b1:
mAdapter.addData(3);
mRecyclerView.scrollToPosition(0);
break;
case R.id.b2:
mAdapter.remove(mList.size()-1);
break;
case R.id.b3:
mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(mLinearLayoutManager);
break;
case R.id.b4:
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
//mRecyclerView.addItemDecoration(new android.support.v7.widget.DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL));
break;
case R.id.b5:
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
break;
}
}
}
activity_main.xml
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=" Add "/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=" Delete "/>
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="List"/>
<Button
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="Grid"/>
<Button
android:id="@+id/b5"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="flow"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
RvAdapter.java
public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder>{
private List<String> lists;
private Context mContext;
public RvAdapter(List<String> lists, Context context) {
this.lists = lists;
mContext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(mContext, R.layout.item, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
public void addData(int position) {
lists.add(position,"ff");
notifyItemInserted(position);
}
public void remove(int i) {
lists.remove(i);
notifyItemRemoved(i);
notifyDataSetChanged();
}
public interface OnItemClickListener{ // Custom interface callback setting click event
void onItemClick(int position);
void onItemLongClick(int position);
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
mOnItemClickListener=onItemClickListener;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.mTextView.setText(lists.get(position));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int ps = holder.getLayoutPosition();
mOnItemClickListener.onItemClick(ps);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
int ps=holder.getLayoutPosition();
mOnItemClickListener.onItemLongClick(ps);
return false;
}
});
}
@Override
public int getItemCount() {
return lists.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder{
public final TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.tv);
}
}
}
build.gradle
implementation 'com.android.support:recyclerview-v7:27.1.1'