Android RecycleView使用(CheckBox全選、反選、單選)
更新時間:2017年09月06日 08:45:25 作者:我心如風123
這篇文章主要為大家詳細介紹了Android RecycleView使用,CheckBox全選、反選、單選效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了CheckBox全選、反選、單選的具體代碼,供大家參考,具體內(nèi)容如下
MainActiivity
package com.bwie.day06;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.bwie.day06.myadapter.MyAdapter;
public class MainActivity extends AppCompatActivity {
private MyAdapter myAdapter;
private LinearLayoutManager linearLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
//在加載數(shù)據(jù)之前配置
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
//創(chuàng)建一個適配器
myAdapter = new MyAdapter();
recyclerView.setAdapter(myAdapter);
}
public void btnAll(View view) {
myAdapter.All();
}
public void btnner(View view) {
myAdapter.neverall();
}
}
Adapter
package com.bwie.day06.myadapter;
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.TextView;
import com.bwie.day06.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
//這個是checkbox的Hashmap集合
private final HashMap<Integer, Boolean> map;
//這個是數(shù)據(jù)集合
private final ArrayList<String> list;
public MyAdapter() {
map = new HashMap<>();
list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
//添加30條數(shù)據(jù)
list.add("這是條目" + i);
map.put(i, false);
}
}
/**
* 全選
*/
public void All() {
Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();
boolean shouldall = false;
for (Map.Entry<Integer, Boolean> entry : entries) {
Boolean value = entry.getValue();
if (!value) {
shouldall = true;
break;
}
}
for (Map.Entry<Integer, Boolean> entry : entries) {
entry.setValue(shouldall);
}
notifyDataSetChanged();
}
/**
* 反選
*/
public void neverall() {
Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();
for (Map.Entry<Integer, Boolean> entry : entries) {
entry.setValue(!entry.getValue());
}
notifyDataSetChanged();
}
/**
* 單選
*
* @param postion
*/
public void singlesel(int postion) {
Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();
for (Map.Entry<Integer, Boolean> entry : entries) {
entry.setValue(false);
}
map.put(postion, true);
notifyDataSetChanged();
}
//這里主要初始化布局控件
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.LayoutManager layoutManager = ((RecyclerView) parent).getLayoutManager();
//初始化布局文件
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.check, parent, false);
return new MyViewHolder(inflate);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
//放入集合中的值
holder.txt.setText(list.get(position));
holder.checkBox.setChecked(map.get(position));
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
map.put(position, !map.get(position));
//刷新適配器
notifyDataSetChanged();
//單選
// singlesel(position);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
View itemView;
private TextView txt;
private CheckBox checkBox;
//初始化控件
public MyViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
txt = (TextView) itemView.findViewById(R.id.txt);
checkBox = (CheckBox) itemView.findViewById(R.id.cbox);
}
}
}
main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:onClick="btnAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="全選" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="反選"
android:onClick="btnner"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
Check.xml
<CheckBox android:id="@+id/cbox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="dfdfdfdf" android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" />
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Android ExpandableListView實現(xiàn)下拉刷新和加載更多效果
- Android實踐之帶加載效果的下拉刷新上拉加載更多
- android使用PullToRefresh框架實現(xiàn)ListView下拉刷新上拉加載更多
- Android中使用ScrollView實現(xiàn)滑動到底部顯示加載更多
- Android RecyclerView添加上拉加載更多效果
- Android中RecycleView與ViewPager沖突的解決方法及原理
- android中RecycleView添加下滑到底部的監(jiān)聽示例
- Android 使用RecycleView列表實現(xiàn)加載更多的示例代碼
相關文章
Android 廣播大全 Intent Action 事件詳解
這篇文章主要給大家介紹Android 廣播大全 Intent Action 事件詳解,涉及到android廣播action 方面知識點,本文講解的非常的全面,感興趣的朋友一起看看吧2015-10-10
Android編程實現(xiàn)修改標題欄位置使其居中的方法
這篇文章主要介紹了Android編程實現(xiàn)修改標題欄位置使其居中的方法,涉及Android布局設置的簡單實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
AndroidStudio 配置 AspectJ 環(huán)境實現(xiàn)AOP的方法
本篇文章主要介紹了AndroidStudio 配置 AspectJ 環(huán)境實現(xiàn)AOP的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
Android實現(xiàn)本地Service方法控制音樂播放
這篇文章主要為大家詳細介紹了Android實現(xiàn)本地Service方法控制音樂播放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-03-03

