Adapter类
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<String> list;
private HashMap<Integer, Boolean> booleanHashMap;
public MyAdapter() {
list = new ArrayList<>();
booleanHashMap = new HashMap<>();
for (int i = 0; i < 50; i++) {
list.add("条目" + i);
booleanHashMap.put(i, false);
}
}
//点击接口
public interface OnItemClickListener{
void cliclLister(View view,int position);
}
private OnItemClickListener mOnleister;
public void setmOnleister(OnItemClickListener mOnleister) {
this.mOnleister = mOnleister;
}
//长按接口
public interface OnItemLongClickListener{
void OnItemLong(View view,int position);
}
private OnItemLongClickListener onItemLongClickListener;
public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
this.onItemLongClickListener = onItemLongClickListener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = View.inflate(parent.getContext(), R.layout.recyclerview_layout, null);
return new MyViewHolder(inflate);
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.tv.setText(list.get(position));
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
booleanHashMap.put(position, !booleanHashMap.get(position));
notifyDataSetChanged();
}
});
holder.checkBox.setChecked(booleanHashMap.get(position));
holder.checkBox.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Set<Map.Entry<Integer, Boolean>> entries = booleanHashMap.entrySet();
for (Map.Entry<Integer, Boolean> b : entries) {
b.setValue(false);
}
booleanHashMap.put(position,true);
notifyDataSetChanged();
return true;
}
});
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnleister.cliclLister(v,position);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
onItemLongClickListener.OnItemLong(v,position);
return true;
}
});
}
@Override
public int getItemCount() {
return list.size();
}
//反选
public void fanXuan() {
Set<Map.Entry<Integer, Boolean>> entries = booleanHashMap.entrySet();
for (Map.Entry<Integer, Boolean> b : entries) {
b.setValue(!b.getValue());
}
notifyDataSetChanged();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
CheckBox checkBox;
TextView tv;
View itemView;
public MyViewHolder(View itemView) {
super(itemView);
checkBox = (CheckBox) itemView.findViewById(R.id.check);
tv = (TextView) itemView.findViewById(R.id.tv);
this.itemView=itemView;
}
}
//全选
public void checkAll() {
boolean shouldCheck = false;
Set<Map.Entry<Integer, Boolean>> entries = booleanHashMap.entrySet();
for (Map.Entry<Integer, Boolean> b : entries) {
Boolean value = b.getValue();
if (!value) {
shouldCheck = true;
break;
}
}
for (Map.Entry<Integer, Boolean> b : entries) {
b.setValue(shouldCheck);
}
notifyDataSetChanged();
}
}
MainActivity类
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
myAdapter = new MyAdapter();
recyclerView.setAdapter(myAdapter);
myAdapter.setmOnleister(new MyAdapter.OnItemClickListener() {
@Override
public void cliclLister(View view, int position) {
Toast.makeText(MainActivity.this, "点击:" + position, Toast.LENGTH_SHORT).show();
}
});
myAdapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
@Override
public void OnItemLong(View view, int position) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("长按啦"+position);
builder.create().show();
}
});
}
//全选或全不选
public void checkAllorNo(View view) {
myAdapter.checkAll();
}
//反选
public void fanXuan(View view) {
myAdapter.fanXuan();
}
}