package com.sinpin.recycleview_jhq;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by JiaHuaiQing on 2016/12/3.
* Copyright (c) 2015 sinping.com
*/
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> implements View.OnClickListener, View.OnLongClickListener {
private Context context;
private ArrayList<Object> strLists;
// 存储勾选框状态的map集合
private HashMap<Integer, Boolean> map = new HashMap<>();
private MyViewHolder holder;
public MyRecyclerAdapter(Context context, ArrayList<Object> strLists) {
this.context = context;
this.strLists = strLists;
initMap();
}
//初始化map集合,默认为不选中
public void initMap() {
for (int i = 0; i < strLists.size(); i++) {
map.put(i, false);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View root = LayoutInflater.from(context).inflate(R.layout.item_view, parent, false);
holder = new MyViewHolder(root);
//holder.cb_CheckBox.setOnClickListener(this);
//holder.cb_CheckBox.setOnLongClickListener(this);
root.setOnClickListener(this);
root.setOnLongClickListener(this);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.tvText.setText((String) strLists.get(position));
//holder.cb_CheckBox.setTag(position);
holder.root.setTag(position);
holder.cb_CheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d("position",position+"-aj-"+isChecked);
map.put(position, isChecked);
}
});
if (map.get(position) == null) {
map.put(position, false);
}
holder.cb_CheckBox.setChecked(map.get(position));
}
@Override
public int getItemCount() {
return strLists.size();
}
@Override
public void onClick(View v) {
Log.d("position","--"+v.findViewById(R.id.cb_CheckBox).getTag());
//listener.OnItemClickListener(v, (Integer) v.findViewById(R.id.cb_CheckBox).getTag());
listener.OnItemClickListener(v, (Integer) v.getTag());
}
@Override
public boolean onLongClick(View v) {
initMap();
Toast.makeText(context, "长按", Toast.LENGTH_LONG).show();
//return listener != null && listener.OnItemLongClickListener(v, (Integer) v.findViewById(R.id.cb_CheckBox).getTag());
return listener != null && listener.OnItemLongClickListener(v, (Integer) v.getTag());
}
public void setSelectedItem(Integer position) {
if (map.get(position)) {
map.put(position, false);
} else {
map.put(position, true);
}
notifyItemChanged(position);
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView tvText;
CheckBox cb_CheckBox;
View root;
public MyViewHolder(View itemView) {
super(itemView);
this.root=itemView;
tvText = (TextView) itemView.findViewById(R.id.tv_Text);
cb_CheckBox = (CheckBox) itemView.findViewById(R.id.cb_CheckBox);
}
}
//接口回调设置点击事件
public interface MyRecyclerViewOnItemClickListener {
//点击事件
void OnItemClickListener(View v, Integer position);
//长按事件
boolean OnItemLongClickListener(View v, Integer position);
}
public void setMyRecyclerViewOnItemClickListener(MyRecyclerViewOnItemClickListener listener) {
this.listener = listener;
}
//接口实例
public MyRecyclerViewOnItemClickListener listener;
}
没有合适的资源?快使用搜索试试~ 我知道了~
RecylerView中checkbox的选择错乱问题和选不中问题DEMO
共59个文件
xml:23个
bin:6个
png:5个
需积分: 9 10 下载量 152 浏览量
2016-12-05
15:42:09
上传
评论 1
收藏 12.71MB RAR 举报
温馨提示
RecylerView中checkbox的选择错乱问题和选不中问题的DEMO,详情看地址:http://blog.csdn.net/jason_996/article/details/53464728
资源推荐
资源详情
资源评论
收起资源包目录
RecycleView_jhq.rar (59个子文件)
RecycleView_jhq
gradlew 5KB
settings.gradle 16B
.idea
libraries
junit_4_12.xml 477B
appcompat_v7_23_1_1.xml 782B
support_annotations_23_1_1.xml 537B
hamcrest_core_1_3.xml 526B
recyclerview_v7_23_1_1.xml 800B
support_v4_23_1_1.xml 924B
runConfigurations.xml 564B
misc.xml 3KB
compiler.xml 686B
workspace.xml 152KB
gradle.xml 739B
.name 15B
encodings.xml 159B
modules.xml 367B
copyright
profiles_settings.xml 76B
build
intermediates
dex-cache
cache.xml 64B
generated
mockable-android-23.jar 22.2MB
gradle
wrapper
gradle-wrapper.properties 231B
gradle-wrapper.jar 52KB
RecycleView_jhq.iml 946B
.gradle
2.10
tasks
_app_compileDebugJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.bin 19KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis
localClassSetAnalysis.bin 76KB
localClassSetAnalysis.lock 17B
taskArtifacts
cache.properties.lock 17B
fileHashes.bin 219KB
outputFileStates.bin 20KB
taskArtifacts.bin 86KB
fileSnapshots.bin 2.14MB
cache.properties 31B
local.properties 449B
gradlew.bat 2KB
gradle.properties 872B
.gitignore 105B
app
src
androidTest
java
com
sinpin
recycleview_jhq
ApplicationTest.java 369B
test
java
com
sinpin
recycleview_jhq
ExampleUnitTest.java 333B
main
AndroidManifest.xml 685B
res
mipmap-hdpi
ic_launcher.png 3KB
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher.png 5KB
mipmap-mdpi
ic_launcher.png 2KB
drawable
layout
item_view.xml 686B
activity_main.xml 792B
values-w820dp
dimens.xml 364B
values
colors.xml 214B
strings.xml 81B
styles.xml 394B
dimens.xml 216B
mipmap-xxhdpi
ic_launcher.png 8KB
java
com
sinpin
recycleview_jhq
MainActivity.java 2KB
MyRecyclerAdapter.java 4KB
DividerItemDecoration.java 3KB
libs
app.iml 9KB
.gitignore 8B
build.gradle 711B
proguard-rules.pro 683B
build.gradle 521B
共 59 条
- 1
资源评论
贾怀庆同学
- 粉丝: 49
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功