最近做一个项目,有很多项需要单选,但android上RadioGroup不能实现RadioButton自动换行的效果,于是通过另一种方式来实现类似效果.

package com.dq.slidemenu;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;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;import android.widget.Toast;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> mList1;private ArrayList> mList2;private ArrayList> 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);initMainUI();initMainUIListener();}private void initMainUI() {setContentView(R.layout.activity_search2);title = (TextView)findViewById(R.id.title_activity);if (title != null) {title.setText(R.string.search_movie);}back = (Button)findViewById(R.id.back);if (back != null) {back.setVisibility(View.VISIBLE);}rightBT = (Button)findViewById(R.id.rightBT);if (rightBT != null) {rightBT.setVisibility(View.VISIBLE);rightBT.setText(R.string.search);}initGridViewOne();initGridViewTwo();initGridViewThree();}private void initGridViewOne() {gridViewType = (GridView)findViewById(R.id.search_type);mList1 = new ArrayList>();for (int i = 0; i < TYPE_NUM; i++) {HashMap map = new HashMap();map.put("radioIcon", R.drawable.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>();for (int i = 0; i < AREA_NUM; i++) {HashMap map = new HashMap();map.put("radioIcon", R.drawable.radiobutton_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>();for (int i = 0; i < TIME_NUM; i++) {HashMap map = new HashMap();map.put("radioIcon", R.drawable.radiobutton_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 goToSearch() {LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(R.layout.search_result, null);setContentView(layout);title = (TextView)layout.findViewById(R.id.title_activity);if (title != null) {title.setText(R.string.search_result);}back = (Button)layout.findViewById(R.id.back);if (back != null) {back.setVisibility(View.VISIBLE);back.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinish();}});}}private void initMainUIListener() {MyOnClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()) {case R.id.back:finish();break;case R.id.rightBT:goToSearch();break;default:break;}}};if (back != null) {back.setOnClickListener(MyOnClickListener);}if (rightBT != null) {rightBT.setOnClickListener(MyOnClickListener);}}private void changeItemImg(SimpleAdapter sa, int selectedItem, boolean isOn) {HashMap map = (HashMap)sa.getItem(selectedItem);if (isOn) {map.put("radioIcon", R.drawable.radiobutton_on);} else {map.put("radioIcon", R.drawable.radiobutton_off);}sa.notifyDataSetChanged();}private class MyTypeOnItemClick implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO Auto-generated method stubSystem.out.println("search_type");if (typeLastItem != position) {if (typeLastItem >= 0) {changeItemImg(adater1, typeLastItem, false);}}typeLastItem = position;changeItemImg(adater1, position, true);HashMap map = (HashMap)adater1.getItem(position);String typeStr = (String)map.get("radioText");System.out.println("Type string:"+typeStr);}}private class MyAreaOnItemClick implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO Auto-generated method stubSystem.out.println("search_area");if (areaLastItem != position) {if (areaLastItem >= 0) {changeItemImg(adater2, areaLastItem, false);}}areaLastItem = position;changeItemImg(adater2, position, true);HashMap map = (HashMap)adater2.getItem(position);String areaStr = (String)map.get("radioText");System.out.println("Area string:"+areaStr);}}private class MyTimeOnItemClick implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO Auto-generated method stubSystem.out.println("search_time");if (timeLastItem != position) {if (areaLastItem >= 0) {changeItemImg(adater3, timeLastItem, false);}}timeLastItem = position;changeItemImg(adater3, position, true);HashMap map = (HashMap)adater3.getItem(position);String timeStr = (String)map.get("radioText");System.out.println("Time string:"+timeStr);}}}

2. [文件] activity_search2.xml ~ 5KB     下载(31)     

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


4. [图片] 1.png    

Android:实现类似RadioButton自动换行及单选效果_第1张图片

更多相关文章

  1. Android 图片阴影处理分析!
  2. LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜
  3. android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
  4. Android系列之Post图片和数据
  5. android和ios button点击变暗效果
  6. Android给控件添加默认点击效果
  7. 【Android 界面效果42】如何自定义字体
  8. Android 自定义camera压缩图片到指定大小

随机推荐

  1. 《Android系统学习》第十一章:Android应用
  2. 工具收藏
  3. [置顶] 入门Android开发--android基础
  4. 学习新手给Android新手的一些学习建议
  5. android 布局xml中 android:fitsSystemWi
  6. tools:context=".MainActivity的作用
  7. Android 配置环境变量
  8. android SD卡读写权限
  9. Android监听网络变化
  10. Android实现输入法弹出时把布局顶上去和