`

android一行显示多个多选框

阅读更多

项目本来一行显示一个多选框+区域名字
需求:一行显示(多选框+区域名字)*4


本来是用listview解决的,但是布局文件写的有点麻烦。
最后用gridview

附件有gridview项目

以下代码是listview项目

 

布局文件如下 multiple_checkbox_main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<ListView android:id="@+id/listview"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:cacheColorHint="#00000000"

/>

</LinearLayout>

 

multiple_checkbox_main_row.xml

 

 

<?xml version="1.0" encoding="utf-8"?>

<TableLayout android:layout_width="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content">

<TableRow>

<!-- 

这三个很重要

android:focusable="false"

android:focusableInTouchMode="false"

android:clickable="false"

-->

<CheckBox  

       android:id="@+id/multiple_checkbox1"

       android:layout_width="40dip" 

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:focusable="true"

android:focusableInTouchMode="false"

android:clickable="true"/>

<TextView android:id="@+id/multiple_summary1" 

   android:layout_width="40dip"

android:layout_height="wrap_content" 

android:layout_marginTop="10dip"

android:textSize="20dip" 

android:gravity="center_vertical"/>

<CheckBox  

       android:id="@+id/multiple_checkbox2"

       android:layout_width="40dip" 

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:focusable="true"

android:focusableInTouchMode="false"

android:clickable="true"/>

<TextView android:id="@+id/multiple_summary2" 

   android:layout_width="40dip"

android:layout_height="wrap_content" 

android:layout_marginTop="10dip"

android:textSize="20dip" 

android:gravity="center_vertical"/>

</TableRow>

</TableLayout>  




activity

package com.jetty;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;


public class MultipleChoiceActivity extends Activity{
private MyAdapter mSimpleAdapter;
public final static String NAME = "name";  
public final static String PHONE_NUMBER = "phone"; 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("带有多选的Listview");
setContentView(R.layout.multiple_checkbox_main);
ListView listView = (ListView) findViewById(R.id.listview);
ArrayList<Map<String, String>> al = new ArrayList<Map<String,String>>();
Map<String, String> map1 = new HashMap<String, String>();
map1.put(PHONE_NUMBER, "杭州");
al.add(map1);
Map<String, String> map2 = new HashMap<String, String>();

map2.put(PHONE_NUMBER, "宁波");
al.add(map2);
Map<String, String> map3 = new HashMap<String, String>();

map3.put(PHONE_NUMBER, "温州");
al.add(map3);
Map<String, String> map4 = new HashMap<String, String>();

map4.put(PHONE_NUMBER, "全省");
al.add(map4);
String[] from = { PHONE_NUMBER,PHONE_NUMBER };
int[] to = { R.id.multiple_summary1,R.id.multiple_summary2 };
mSimpleAdapter = new MyAdapter(this, al, R.layout.multiple_checkbox_main, from, to);
listView.setAdapter(mSimpleAdapter);
}

public class MyAdapter extends SimpleAdapter {
Map<Integer, Boolean> map; 
LayoutInflater mInflater;
private List<? extends Map<String, ?>> mList;
public MyAdapter(Context context, List<Map<String, String>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
map = new HashMap<Integer, Boolean>();
mInflater = LayoutInflater.from(context);
mList = data;
for(int i = 0; i < data.size(); i++) {
map.put(i, false);
}
@Override
public int getCount() {
return mList.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = mInflater.inflate(R.layout.multiple_checkbox_main_row, null);
}
TextView tP1 = (TextView) convertView.findViewById(R.id.multiple_summary1);
tP1.setText((String)mList.get(position).get(PHONE_NUMBER));
CheckBox checkBox1 = (CheckBox) convertView.findViewById(R.id.multiple_checkbox1);
checkBox1.setChecked(map.get(position)); 
TextView tP2 = (TextView) convertView.findViewById(R.id.multiple_summary2);
tP2.setText((String)mList.get(position).get(PHONE_NUMBER));
CheckBox checkBox2 = (CheckBox) convertView.findViewById(R.id.multiple_checkbox2);
checkBox2.setChecked(map.get(position)); 
return convertView;
}
}
 

}

分享到:
评论

相关推荐

    Android 多行多列CheckBox

    CheckBox是Android提供的一个UI组件,用于让用户选择一个或多个选项。当需要在界面上展示大量的CheckBox,并且需要以网格形式排列时,就需要实现多行多列的布局。下面将详细讲解如何实现这一功能。 1. **布局设计**...

    带复选框的listview

    综上所述,"带复选框的listview"是一个涉及Android UI组件、事件处理和Adapter模式的综合问题。理解和掌握这些知识点,对于开发出功能完善的Android应用至关重要。在实践中不断探索和优化,可以让你的用户体验更加...

    android的ListView中的复选框的问题

    2. **优化滚动视图的使用:**避免使用`HorizontalScrollView`来包裹多个`ListView`,因为这会导致焦点和滚动冲突。可以考虑使用其他布局方式,如`ViewPager`或`TabLayout`来实现类似的效果。 3. **自定义Adapter:*...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    • Surface Surface Surface Surface Manager Manager Manager Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D 和3D 图层的无缝融合。 • LibWebCore LibWebCore LibWebCore LibWebCore - 一个最新的 ...

    android无限级树源码

    总的来说,这个“android无限级树源码”项目涵盖了Android UI组件的自定义、数据适配、状态管理和交互设计等多个方面,对于提升Android开发者在处理层级数据和复杂UI的能力有很大的帮助。通过深入学习和理解这个源码...

    Android Studio安装教程

    安装完毕后,不要勾选"Start Android Studio"复选框,以避免自动启动和SDK更新检查。如果已经启动,可以通过修改配置文件来禁用自动检查。 6. **修改配置文件** 打开Android Studio的安装路径下的`bin`文件夹,...

    android部分控件详解

    每个TableRow可以包含多个子控件,代表表格的一行。 3. **相对布局 (RelativeLayout)**: - 相对布局允许控件相对于其他控件或父布局定位。 - `android:layout_above/below/toLeftOf/toRightOf`: 控制一个控件相...

    Google Android SDK开发范例大全(完整版)

    Android 应用程序由一个或多个组件组成: 活动 具有可视 UI 的应用程序是用活动实现的。当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。 服务 服务应该用于任何需要持续较长时间的应用程序...

    android GUI

    - **android:singleLine**:设置是否只显示一行。 - **android:text**:设置文本内容。 - **android:textAllCaps**:设置所有字母是否强制转换为大写。 - **android:textAppearance**:设置文本外观,如字体大小、...

    Android图形界面基本UI控件示例

    `android:checked`属性控制复选框是否被选中,`CheckedChangeListener`同样用于监听选中状态变化。 8. **Spinner**: Spinner是一个下拉选择列表,用户可以从预设的选项中选择一个。它通常比ListView更节省空间。...

    Android SegmentControl

    在很多应用中,我们能看到顶部有一行可选的标签,点击不同的标签可以切换到对应的页面内容,这就是SegmentControl的基本功能。在Android原生库中,我们可以使用`android.widget.TabHost`或`...

    Android所有UI控件

    Spinner是下拉选择框,通常用于提供多个选项供用户选择。`android:entries`属性定义选项列表。 10. **Checkbox** Checkbox是复选框,用户可以选中或取消选中。`android:checked`属性控制初始状态。 11. **...

    Android Material FlowLayout简单使用

    其中,FlowLayout是一种特殊的布局管理器,用于在水平或垂直方向上动态排列子视图,当一行或一列填满后,会自动换行或换列。在本主题中,我们将深入探讨如何在Android项目中简单使用Material Design的FlowLayout。 ...

    KLSD.rar_android_android数独

    数独游戏是一种逻辑推理游戏,玩家需要根据已知数字填充9×9的宫格,使得每一行、每一列以及每一个3×3的小宫格内都包含数字1到9,且不能重复。在Android平台上开发数独游戏,可以让我们深入理解Android应用开发的...

    Android实例开发完全手册

    - **具体实现:** 创建一个包含多个子View的LinearLayout。 - **特别提醒:** LinearLayout是其他布局类型的基类。 - **2.2 使用相对布局(RelativeLayout)** - **实例说明:** 使用RelativeLayout来组织视图...

    Android一个批量删除联系人的Demo.rar

    这个"Android一个批量删除联系人的Demo"是一个示例项目,它展示了如何在Android应用中实现批量删除联系人的功能。下面将详细介绍这个Demo涉及的关键知识点。 1. **Android权限管理**: 在Android系统中,访问或...

    Android控件及布局的使用

    - **CheckBox**:复选框,用户可以选择一个或多个选项。 ##### 4.3.6 RadioButton - **RadioButton**:单选按钮,同一组内只能选中一个选项。 ##### 4.3.7 AnalogClock - **AnalogClock**:显示模拟时钟。 ####...

    android-dialog弹出框,弹出gridview条目选中.rar

    本示例“android-dialog弹出框,弹出gridview条目选中”是一个实现自定义Dialog并集成GridView来展示可选条目的实践案例。下面我们将深入探讨这一主题。 首先,`Dialog`是Android提供的一个类,用于显示一个浮动...

    UI.rar_android_android studio_android ui_android ui 布局_页面

    - **复选框(CheckBox)**和单选按钮(RadioButton):提供多选或单选功能。 - **进度条(ProgressBar)**:显示任务的进度,如加载数据或执行操作。 在Android Studio中,可以通过可视化编辑器(如Design View或...

    安卓listview相关相关-listview实现checkbox多选效果可动态加载数据完美融合.rar

    你需要创建一个自定义Adapter,继承自BaseAdapter或ArrayAdapter,重写其中的方法,如`getView()`,`getCount()`等,以便根据数据源生成ListView的每一行视图。 3. **ViewHolder模式**: - 为了提高ListView的滚动...

Global site tag (gtag.js) - Google Analytics