安卓ListView和CheckBox组合使用
2016-11-18 10:04
239 查看
项目需要,使用ListView把存储卡中的某个文件夹下的文件列出来,并且可以对这些文件进行删除处理。
1、布局文件line.xml
用来布局ListView每一项的样式
一个图片文件、一个文本显示、一个选择框,其中CheckBox要做失焦处理,因为我们想要的是点击后进入ListView的监听函数
失焦处理:
2、布局文件main.xml
用ListView显示文件,按钮操作文件,共4个按钮:确认删除,全部选择,取消选择,取消删除。
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/line"
android:layout_alignParentTop="true">
</ListView>
<LinearLayout
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<Button
android:id="@+id/affirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认删除"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/selectAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全部选择"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/cancelselect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消选择"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消删除"
android:textSize="50sp"
android:layout_weight="1"/>
</LinearLayout>
3.、Main.java文件
//定义存放在drawable文件夹下的file.png文件
import static com.nialt.www.listview.R.drawable.file;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemLongClickListener, AdapterView.OnItemClickListener {
//定义组件
ListView listView;
Button affirm;
Button selectAll;
Button cancelselect;
Button cancel;
List<Map<String,Object>> listitems;
SimpleAdapter simpleAdapter;
CheckBox checkBox1;
@Override
public void onResume()
{
super.onResume();
//绑定组件并且定义监听函数
listView=(ListView)findViewById(R.id.listview);
listView.setOnItemLongClickListener(this);
listView.setOnItemClickListener(this);
affirm=(Button)findViewById(R.id.affirm);
selectAll=(Button)findViewById(R.id.selectAll);
cancelselect=(Button)findViewById(R.id.cancelselect);
cancel=(Button)findViewById(R.id.cancel);
affirm.setOnClickListener(this);
selectAll.setOnClickListener(this);
cancelselect.setOnClickListener(this);
cancel.setOnClickListener(this);
File sdcardDir = Environment.getExternalStorageDirectory();
//得到一个路径,内容是sdcard的文件夹路径和名字
String path=sdcardDir.getPath();
File path1 = new File(path+"/RBMFILE");
File[] files=path1.listFiles();
listitems=new ArrayList<Map<String,Object>>();
for (int i=0;i<files.length;i++)
{
Map<String,Object> listitem=new HashMap<String,Object>();
listitem.put("icon", file);
listitem.put("file_name", files[i].getName());
listitem.put("checkBox", false);
listitems.add(listitem);
}
//创建一个SimpleAdapter
simpleAdapter=new SimpleAdapter(getApplicationContext(),
listitems,
R.layout.line,
new String[]{"icon","file_name","checkBox"},
new int[]{R.id.icon,R.id.file_name, R.id.checkBox});
listView.setAdapter(simpleAdapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.v("长按输出","长按输出");
return false;
}
@Override
public void onClick(View view) {
Button button=(Button)view;
if (button==affirm)
{
for (int i=0;i<listitems.size();i++)
{
//寻找选中的项
if (listitems.get(i).get("checkBox").toString().equals("true"))
{
String s=listitems.get(i).get("file_name").toString();
Log.v("文件名称",s);
}
}
}
else if (button==selectAll)
{
for (int i=0;i<listitems.size();i++)
{
listitems.get(i).put("checkBox",true);
simpleAdapter.notifyDataSetChanged();
}
}
else if (button==cancelselect)
{
for (int i=0;i<listitems.size();i++)
{
if (listitems.get(i).get("checkBox").toString().equals("true"))
{
listitems.get(i).put("checkBox",false);
simpleAdapter.notifyDataSetChanged();
}
}
}
else if (button==cancel)
{
Log.v("取消删除","cancel");
}
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String s=listitems.get(i).get("checkBox").toString();
if (s.equals("false"))
{
listitems.get(i).put("checkBox",true);
}
else
{
listitems.get(i).put("checkBox",false);
}
simpleAdapter.notifyDataSetChanged();
}
}
4、实现效果,真机运行的,直接拍图了
1、布局文件line.xml
用来布局ListView每一项的样式
一个图片文件、一个文本显示、一个选择框,其中CheckBox要做失焦处理,因为我们想要的是点击后进入ListView的监听函数
失焦处理:
android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"
<ImageView android:id="@+id/icon" android:layout_width="40dp" android:layout_height="40dp" android:paddingLeft="10dp"/> <!-- 定义一个TextView,用于作为列表项的一部分。 --> <TextView android:id="@+id/file_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/icon" android:textSize="30dp" android:textColor="@android:color/white"/> <CheckBox android:id="@+id/checkBox" android:text="" android:layout_width="78dp" android:layout_height="wrap_content" android:layout_alignBottom="@+id/file_name" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:focusable="false" android:clickable="false" android:focusableInTouchMode="false"/>
2、布局文件main.xml
用ListView显示文件,按钮操作文件,共4个按钮:确认删除,全部选择,取消选择,取消删除。
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/line"
android:layout_alignParentTop="true">
</ListView>
<LinearLayout
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<Button
android:id="@+id/affirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认删除"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/selectAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全部选择"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/cancelselect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消选择"
android:textSize="50sp"
android:layout_weight="1"/>
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消删除"
android:textSize="50sp"
android:layout_weight="1"/>
</LinearLayout>
3.、Main.java文件
//定义存放在drawable文件夹下的file.png文件
import static com.nialt.www.listview.R.drawable.file;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemLongClickListener, AdapterView.OnItemClickListener {
//定义组件
ListView listView;
Button affirm;
Button selectAll;
Button cancelselect;
Button cancel;
List<Map<String,Object>> listitems;
SimpleAdapter simpleAdapter;
CheckBox checkBox1;
@Override
public void onResume()
{
super.onResume();
//绑定组件并且定义监听函数
listView=(ListView)findViewById(R.id.listview);
listView.setOnItemLongClickListener(this);
listView.setOnItemClickListener(this);
affirm=(Button)findViewById(R.id.affirm);
selectAll=(Button)findViewById(R.id.selectAll);
cancelselect=(Button)findViewById(R.id.cancelselect);
cancel=(Button)findViewById(R.id.cancel);
affirm.setOnClickListener(this);
selectAll.setOnClickListener(this);
cancelselect.setOnClickListener(this);
cancel.setOnClickListener(this);
File sdcardDir = Environment.getExternalStorageDirectory();
//得到一个路径,内容是sdcard的文件夹路径和名字
String path=sdcardDir.getPath();
File path1 = new File(path+"/RBMFILE");
File[] files=path1.listFiles();
listitems=new ArrayList<Map<String,Object>>();
for (int i=0;i<files.length;i++)
{
Map<String,Object> listitem=new HashMap<String,Object>();
listitem.put("icon", file);
listitem.put("file_name", files[i].getName());
listitem.put("checkBox", false);
listitems.add(listitem);
}
//创建一个SimpleAdapter
simpleAdapter=new SimpleAdapter(getApplicationContext(),
listitems,
R.layout.line,
new String[]{"icon","file_name","checkBox"},
new int[]{R.id.icon,R.id.file_name, R.id.checkBox});
listView.setAdapter(simpleAdapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.v("长按输出","长按输出");
return false;
}
@Override
public void onClick(View view) {
Button button=(Button)view;
if (button==affirm)
{
for (int i=0;i<listitems.size();i++)
{
//寻找选中的项
if (listitems.get(i).get("checkBox").toString().equals("true"))
{
String s=listitems.get(i).get("file_name").toString();
Log.v("文件名称",s);
}
}
}
else if (button==selectAll)
{
for (int i=0;i<listitems.size();i++)
{
listitems.get(i).put("checkBox",true);
simpleAdapter.notifyDataSetChanged();
}
}
else if (button==cancelselect)
{
for (int i=0;i<listitems.size();i++)
{
if (listitems.get(i).get("checkBox").toString().equals("true"))
{
listitems.get(i).put("checkBox",false);
simpleAdapter.notifyDataSetChanged();
}
}
}
else if (button==cancel)
{
Log.v("取消删除","cancel");
}
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String s=listitems.get(i).get("checkBox").toString();
if (s.equals("false"))
{
listitems.get(i).put("checkBox",true);
}
else
{
listitems.get(i).put("checkBox",false);
}
simpleAdapter.notifyDataSetChanged();
}
}
4、实现效果,真机运行的,直接拍图了
相关文章推荐
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
- ExpandableListView 跟 CheckBox 组合使用!!
- 由群发短信功能学习:CheckBox和ListView组合使用的方法和注意事项.
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
- ListView和CheckBox的组合使用
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
- 安卓开发_复选按钮控件(CheckBox)的简单使用
- Android ListView 使用checkbox 实现 单选、多选操作
- Android中ListView中有button,checkbox,GridView的用法【安卓进化二十五】
- ListView与CheckBox组合实现单选
- Android 中使用ListView和CheckBox进行批量操作
- Android中ListView中使用CheckedTextView和CheckBox的理解
- android开发中ListView与CheckBox的混合使用
- 一个可以使用checkbox,radiobutton的Listview的源码
- ANDROID笔记:ListView和CheckBox的简单使用
- 在ListView的item项里使用CheckBox或者Button时,OnItemClickListener无响应的问题
- 安卓开发-ListView的使用
- Android中ListView中有button,checkbox,GridView的用法【安卓进化二十五】
- android 中listview集成checkbox后使用的一些发现
- 在ListView的item项里使用CheckBox或者Button时,OnItemClickListener无响应的问题