题目可能没看懂,直接上效果图:
(1)主程序:
package com.example.radiogrouptest;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class SearchMovieActivity extends Activity {
private GridView gridViewType;
private GridView gridViewArea;
private GridView gridViewTime;
private TextView title;
private Button back;
private Button rightBT;
private OnClickListener MyOnClickListener;
private SimpleAdapter adater1;
private SimpleAdapter adater2;
private SimpleAdapter adater3;
private ArrayList<HashMap<String, Object>> mList1;
private ArrayList<HashMap<String, Object>> mList2;
private ArrayList<HashMap<String, Object>> mList3;
private static final int listContent1[] = {R.string.search_type_all,R.string.search_type_love,
R.string.search_type_biography,R.string.search_type_cartoon,R.string.search_type_action,
R.string.search_type_ancient,R.string.search_type_child,R.string.search_type_dance,
R.string.search_type_family,R.string.search_type_frightened,R.string.search_type_terror,
R.string.search_type_fiction,R.string.search_other};
private static final int listContent2[] = {R.string.search_type_all,R.string.search_area_china,
R.string.search_area_china_hk,R.string.search_area_usa,R.string.search_area_europe,
R.string.search_area_kj,R.string.search_area_tailand,R.string.search_other};
private static final int listContent3[] = {R.string.search_time_all,R.string.search_time_2013,
R.string.search_time_2012,R.string.search_time_2011,R.string.search_time_2010,
R.string.search_time_2000,R.string.search_time_90,R.string.search_time_other};
private static final int TYPE_NUM = 13;
private static final int AREA_NUM = 8;
private static final int TIME_NUM = 8;
private int typeLastItem = 0;
private int areaLastItem = 0;
private int timeLastItem = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initMainUI();
}
private void initMainUI() {
setContentView(R.layout.activity_search2);
initGridViewOne();
initGridViewTwo();
initGridViewThree();
}
private void initGridViewOne() {
gridViewType = (GridView)findViewById(R.id.search_type);
mList1 = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < TYPE_NUM; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("radioIcon", R.drawable.btn_radio_off);//radiobutton_off
map.put("radioText", getString(listContent1[i]));
mList1.add(map);
}
adater1 = new SimpleAdapter(getApplicationContext(), mList1, R.layout.search_grid_item,
new String[]{"radioIcon","radioText"}, new int[]{R.id.item_RadioImg,R.id.item_RadioText});
if (gridViewType != null) {
gridViewType.setAdapter(adater1);
gridViewType.requestFocus();
gridViewType.setOnItemClickListener(new MyTypeOnItemClick());
}
}
private void initGridViewTwo() {
gridViewArea = (GridView)findViewById(R.id.search_area);
mList2 = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < AREA_NUM; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("radioIcon", R.drawable.btn_radio_off);
map.put("radioText", getString(listContent2[i]));
mList2.add(map);
}
adater2 = new SimpleAdapter(getApplicationContext(), mList2, R.layout.search_grid_item,
new String[]{"radioIcon","radioText"}, new int[]{R.id.item_RadioImg,R.id.item_RadioText});
if (gridViewArea != null) {
gridViewArea.setAdapter(adater2);
gridViewArea.requestFocus();
gridViewArea.setOnItemClickListener(new MyAreaOnItemClick());
}
}
private void initGridViewThree() {
gridViewTime = (GridView)findViewById(R.id.search_time);
mList3 = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < TIME_NUM; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("radioIcon", R.drawable.btn_radio_off);
map.put("radioText", getString(listContent3[i]));
mList3.add(map);
}
adater3 = new SimpleAdapter(getApplicationContext(), mList3, R.layout.search_grid_item,
new String[]{"radioIcon","radioText"}, new int[]{R.id.item_RadioImg,R.id.item_RadioText});
if (gridViewTime != null) {
gridViewTime.setAdapter(adater3);
gridViewTime.requestFocus();
gridViewTime.setOnItemClickListener(new MyTimeOnItemClick());
}
}
private void changeItemImg(SimpleAdapter sa, int selectedItem, boolean isOn) {
HashMap<String, Object> map = (HashMap<String, Object>)sa.getItem(selectedItem);
if (isOn) {
map.put("radioIcon", R.drawable.btn_radio_on);
} else {
map.put("radioIcon", R.drawable.btn_radio_off);
}
sa.notifyDataSetChanged();
}
private class MyTypeOnItemClick implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
System.out.println("search_type");
if (typeLastItem != position) {
if (typeLastItem >= 0) {
changeItemImg(adater1, typeLastItem, false);
}
}
changeItemImg(adater1, position, true);
HashMap<String, Object> map = (HashMap<String, Object>)adater1.getItem(position);
String typeStr = (String)map.get("radioText");
System.out.println("Type string:"+typeStr);
typeLastItem = position;
}
}
private class MyAreaOnItemClick implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
System.out.println("search_area");
if (areaLastItem != position) {
if (areaLastItem >= 0) {
changeItemImg(adater2, areaLastItem, false);
}
}
changeItemImg(adater2, position, true);
HashMap<String, Object> map = (HashMap<String, Object>)adater2.getItem(position);
String areaStr = (String)map.get("radioText");
System.out.println("Area string:"+areaStr);
areaLastItem = position;
}
}
private class MyTimeOnItemClick implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
System.out.println("search_time");
if (timeLastItem != position) {
if (areaLastItem >= 0) {
changeItemImg(adater3, timeLastItem, false);
}
}
timeLastItem = position;
changeItemImg(adater3, position, true);
HashMap<String, Object> map = (HashMap<String, Object>)adater3.getItem(position);
String timeStr = (String)map.get("radioText");
System.out.println("Time string:"+timeStr);
}
}
}
(2)布局文件activity_search2.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/main_bg"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/head"> <!-- 类型 --> <LinearLayout android:id="@+id/linearOne" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/leixing" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search_type_one" android:textSize="18.0sp" android:textColor="#FF1EA5E4" /> <View android:id="@+id/line1" android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> <GridView android:id="@+id/search_type" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="1dp" android:columnWidth="60dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_marginTop="5dip" > </GridView> </LinearLayout> <!-- 地区 --> <LinearLayout android:id="@+id/linearTwo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/linearOne" android:orientation="vertical" > <View android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> <TextView android:id="@+id/area" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search_type_two" android:textSize="18.0sp" android:textColor="#FF1EA5E4" /> <View android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> <GridView android:id="@+id/search_area" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="1dp" android:columnWidth="60dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_marginTop="5dip" > </GridView> </LinearLayout> <!-- 年份 --> <LinearLayout android:id="@+id/linearThree" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/linearTwo" android:orientation="vertical" > <View android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> <TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search_type_three" android:textSize="18.0sp" android:textColor="#FF1EA5E4" /> <View android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> <GridView android:id="@+id/search_time" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="1dp" android:columnWidth="85dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_marginTop="5dip" > </GridView> <View android:layout_width="fill_parent" android:layout_height="1px" android:background="@color/p6" /> </LinearLayout> </RelativeLayout> </RelativeLayout>
(3) 每个item的布局文件search_grid_item.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dip" android:background="@color/main_bg" android:orientation="horizontal" android:gravity="center"> <ImageView android:id="@+id/item_RadioImg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_radio" /> <TextView android:id="@+id/item_RadioText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search_type_all" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout>
(4)串人配置文件strings.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">RadioGroupTest</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="search_type_one">类型</string> <string name="search_type_two">地区</string> <string name="search_type_three">年代</string> <!-- 类型 --> <string name="search_type_all">全部</string> <string name="search_type_love">爱情</string> <string name="search_type_biography">传记</string> <string name="search_type_cartoon">动画</string> <string name="search_type_action">动画</string> <string name="search_type_ancient">动作</string> <string name="search_type_child">儿童</string> <string name="search_type_dance">歌舞</string> <string name="search_type_family">家庭</string> <string name="search_type_frightened">惊悚</string> <string name="search_type_terror">恐怖</string> <string name="search_type_fiction">科幻</string> <string name="search_other">其它</string> <!-- 地区 --> <string name="search_area_china">大陆</string> <string name="search_area_china_hk">香港</string> <string name="search_area_usa">美国</string> <string name="search_area_europe">欧洲</string> <string name="search_area_kj">日韩</string> <string name="search_area_tailand">泰国</string> <!-- 年代 --> <string name="search_time_all">全部</string> <string name="search_time_2013">2013年</string> <string name="search_time_2012">2012年</string> <string name="search_time_2011">2011年</string> <string name="search_time_2010">2010年</string> <string name="search_time_2000">2000年</string> <string name="search_time_90">90年代</string> <string name="search_time_other">其它年代</string> </resources>
(5)颜色配置文件color.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="main_bg">#eeeeee</color> <color name="p6">#41a6f2</color> </resources>
(6)on , off图标,我是从sdk里取出来的:
F:\develop_installed_software\adt-bundle-windows-x86_64-20130219\sdk\platforms\android-7\data\res\drawable-hdpi\btn_radio_off.png
在adt-bundle-windows-x86_64-20130219文件夹一搜索btn_radio_off,btn_radio_on一堆button图标出来,自己随便挑.
代码见附件