android studio recyclerview长按删除
16lz
2021-01-26
mainactivity:
package com.example.jowang.indiatutorialrecycler803;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.CheckBox;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements View.OnLongClickListener{ boolean is_in_action_mode=false; TextView counter_text_view; RecyclerView recyclerView; RecyclerView.LayoutManager layoutManager; RecyclerView.Adapter adapter; Toolbar toolbar; int[] imgs={R.drawable.tu1,R.drawable.tu2,R.drawable.tu3,R.drawable.tu2,R.drawable.tu3}; ArrayListcontactadapter:contacts=new ArrayList<>(); ArrayList selection_list=new ArrayList<>(); int counter=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar=(Toolbar)findViewById(R.id.toolbar); setSupportActionBar(toolbar); recyclerView=(RecyclerView)findViewById(R.id.recyclerview); layoutManager=new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); counter_text_view=(TextView)findViewById(R.id.count_text); counter_text_view.setVisibility(View.GONE); String[] Name,Email; Name=getResources().getStringArray(R.array.name); Email=getResources().getStringArray(R.array.mail); int i=0; for (String NAME:Name){ Contact contact=new Contact(imgs[i],NAME,Email[i]); contacts.add(contact); i++; } adapter=new ContactAdapter(contacts,MainActivity.this); recyclerView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_activitymain,menu); return true; } @Override public boolean onLongClick(View view) { toolbar.getMenu().clear(); toolbar.inflateMenu(R.menu.menu_actionmode); counter_text_view.setVisibility(view.VISIBLE); is_in_action_mode=true; adapter.notifyDataSetChanged(); getSupportActionBar().setDisplayHomeAsUpEnabled(true);//左上角返回图标 return true; } public void prepareSelection(View view,int position){ if (((CheckBox)view).isChecked()){ selection_list.add(contacts.get(position)); counter++; updateCounter(counter); }else { selection_list.remove(contacts.get(position)); counter--; updateCounter(counter); } } public void updateCounter(int counter){ if (counter==0){ counter_text_view.setText("0 item selected"); }else { counter_text_view.setText(counter+" item selected"); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId()==R.id.item_delete){ ContactAdapter contactAdapter=(ContactAdapter)adapter; contactAdapter.updateAdapter(selection_list); clearActionMode(); } else if (item.getItemId()==android.R.id.home){ clearActionMode(); adapter.notifyDataSetChanged(); } return true; } public void clearActionMode(){ is_in_action_mode=false; toolbar.getMenu().clear(); toolbar.inflateMenu(R.menu.menu_activitymain); getSupportActionBar().setDisplayHomeAsUpEnabled(false); counter_text_view.setVisibility(View.GONE); counter_text_view.setText("0 item selected"); counter=0; selection_list.clear(); } @Override public void onBackPressed() { if (is_in_action_mode){ clearActionMode(); adapter.notifyDataSetChanged(); } else { super.onBackPressed(); } }}
package com.example.jowang.indiatutorialrecycler803;import android.content.Context;import android.support.v7.widget.CardView;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;/** * Created by jowang on 16/8/3. */public class ContactAdapter extends RecyclerView.Adaptercontact:{ ArrayList adapter_list=new ArrayList<>(); MainActivity mainActivity; Context ctx; public ContactAdapter(ArrayList adapter_list, Context context) { this.adapter_list = adapter_list; this.ctx = context; mainActivity=(MainActivity)context; } @Override public ContactViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout,parent,false); ContactViewHolder contactViewHolder=new ContactViewHolder(view,mainActivity); return contactViewHolder; } @Override public void onBindViewHolder(ContactViewHolder holder, int position) { holder.img.setImageResource(adapter_list.get(position).getImg_id()); holder.Name.setText(adapter_list.get(position).getName()); holder.Email.setText(adapter_list.get(position).getEmail()); if (!mainActivity.is_in_action_mode){ holder.checkBox.setVisibility(View.GONE); }else { holder.checkBox.setVisibility(View.VISIBLE); holder.checkBox.setChecked(false); } } @Override public int getItemCount() { return adapter_list.size(); } public static class ContactViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ ImageView img; TextView Name,Email; CheckBox checkBox; MainActivity mainActivity; CardView cardView; public ContactViewHolder(View itemView,MainActivity mainActivity) { super(itemView); img=(ImageView)itemView.findViewById(R.id.img_id); Name=(TextView)itemView.findViewById(R.id.name); Email=(TextView)itemView.findViewById(R.id.email); checkBox=(CheckBox)itemView.findViewById(R.id.check_list_item); this.mainActivity=mainActivity; cardView=(CardView)itemView.findViewById(R.id.cardView); cardView.setOnLongClickListener(mainActivity); checkBox.setOnClickListener(this); } @Override public void onClick(View view) { mainActivity.prepareSelection(view,getAdapterPosition()); } } public void updateAdapter(ArrayList list){ for (Contact contact:list){ adapter_list.remove(contact); } notifyDataSetChanged(); }}
package com.example.jowang.indiatutorialrecycler803;/** * Created by jowang on 16/8/3. */public class Contact { int img_id; String name,email; public Contact(int img_id, String name, String email) {// this.img_id = img_id;// this.name = name;// this.email = email; this.setImg_id(img_id); this.setName(name); this.setEmail(email); } public int getImg_id() { return img_id; } public void setImg_id(int img_id) { this.img_id = img_id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}cardviewlayout:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" > <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/cardView" card_view:cardCornerRadius="1dp" android:background="#f4eded" android:layout_margin="3dp" card_view:cardElevation="2dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:padding="15dp" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitCenter" android:id="@+id/img_id" android:src="@drawable/tu1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="aaa" android:layout_toRightOf="@+id/img_id" android:layout_marginLeft="25dp" android:textSize="22dp" android:textStyle="bold" android:id="@+id/name"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="aaa" android:layout_toRightOf="@+id/img_id" android:layout_marginLeft="25dp" android:textSize="13dp" android:textStyle="bold" android:layout_below="@+id/name" android:layout_marginTop="15dp" android:id="@+id/email"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:id="@+id/check_list_item" android:layout_marginTop="15dp"/> RelativeLayout> android.support.v7.widget.CardView>LinearLayout>
更多相关文章
- Android(安卓)AsyncTask 分析
- android桌面图标读取和存储
- Android(安卓)ActionBar 的使用
- 监听Home键和返回键
- AndroidOAuth认证例子
- 56 Android(安卓)Notification 通知
- android的textView周围添加图片
- Android(安卓)TelephonyManager类的介绍
- Android: 渠道号获取