android一行显示多个多选框项目本来一行显示一个多选框+区域名字需求:一行显示(多选框+区域名字)*4本来是
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";?
@Overrideprotected 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);}?}@Overridepublic int getCount() {return mList.size();}
@Overridepublic Object getItem(int position) {return position;}
@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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;}} ?
}