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};    ArrayList 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();        }    }}
contactadapter:

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.Adapter {    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();    }}
contact:

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>

更多相关文章

  1. Android(安卓)AsyncTask 分析
  2. android桌面图标读取和存储
  3. Android(安卓)ActionBar 的使用
  4. 监听Home键和返回键
  5. AndroidOAuth认证例子
  6. 56 Android(安卓)Notification 通知
  7. android的textView周围添加图片
  8. Android(安卓)TelephonyManager类的介绍
  9. Android: 渠道号获取

随机推荐

  1. android 图片渐变处理
  2. Android开发笔记: Activity
  3. Android一种欢迎界面全屏显示方法
  4. Android(安卓)UI thread / main thread
  5. Android(安卓)滑动验证的一种简单实现
  6. Android(安卓)视频截图
  7. MPAndroidChart的具体属性方法
  8. 5款最为使用的android模拟器
  9. Android(安卓)(AOPS) 开发环境配置
  10. 购物车(retrofit2+rxjava2+dagger+fresco