您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        怎么在Android中使用RecyclerView实现一个点击条目删除功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
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);
    //设置分割线
    mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    //设置默认布局
    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="添加"/> <Button android:id="@+id/b2" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="wrap_content" android:text="删除"/> <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{  //自定义接口回调设置点击事件
    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'
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。