1:布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/quan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="全选" />
<Button
android:id="@+id/fan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="反选" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
2:代码
public class MainActivity extends AppCompatActivity {
private Button quan;
private Button fan;
private RecyclerView recycle;
private HashMap<Integer, String> map;
private ArrayList<Peason> list;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
quan = (Button) findViewById(R.id.quan);
fan = (Button) findViewById(R.id.fan);
recycle = (RecyclerView) findViewById(R.id.recycle);
list = new ArrayList<>();
map = new HashMap<Integer,String>();
for (int i = 0; i <100 ; i++) {
Peason peason = new Peason("商品"+i,false);
list.add(peason);
}
adapter = new MyAdapter(MainActivity.this,list);
//设置适配器
recycle.setAdapter(adapter);
//设置布局
recycle.setLayoutManager(new LinearLayoutManager(this, LinearLayout.VERTICAL, false));
quan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setFlage(true);
}
adapter.notifyDataSetChanged();
}
});
fan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).isFlage()) {
list.get(i).setFlage(false);
} else {
list.get(i).setFlage(true);
}
}
adapter.notifyDataSetChanged();
}
});
}
}
3:适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private ArrayList<Peason> list;
public MyAdapter(Context context, ArrayList<Peason> list) {
this.context = context;
this.list = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.recycle_item, null);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.recy_text.setText(list.get(position).getText());
final Peason peason = list.get(position);
holder.checkBox.setChecked(list.get(position).isFlage());
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = ((CheckBox) v).isChecked();
if (checked) {
peason.setFlage(true);
} else {
peason.setFlage(false);
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView recy_text;
private CheckBox checkBox;
public ViewHolder(View itemView) {
super(itemView);
recy_text = (TextView) itemView.findViewById(R.id.recy_text);
checkBox = (CheckBox) itemView.findViewById(R.id.checkbox);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, " 点击 第" + getLayoutPosition() + "条", Toast.LENGTH_SHORT).show();
}
});
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("长按 第" + getLayoutPosition() + "条");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
return false;
}
});
}
}
}
4:bean类
public class Peason {
public String text;
public boolean flage = false;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean isFlage() {
return flage;
}
public void setFlage(boolean flage) {
this.flage = flage;
}
public Peason(String text, boolean flage) {
this.text = text;
this.flage = flage;
}
@Override
public String toString() {
return "Peason{" +
"text=" + text +
", flage=" + flage +
'}';
}
}