有時候我們需要制作自定義的單選列表,但是會遇到一些問題,比如多選,假選問題,所以網上找了找資料,整理一個demo出來,貼一下代碼:
[html]?view plaincopy
<ListView?? ???????android:id="@+id/listView1"?? ???????android:layout_width="match_parent"?? ???????android:layout_height="wrap_content"?? ???????android:layout_centerHorizontal="true"?? ???????android:layout_centerVertical="true"?>?? ???</ListView>??
列表中每行的內容
[html]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?? <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"?? ????android:layout_width="match_parent"?? ????android:layout_height="match_parent"?? ????android:orientation="vertical"?>?? ?? ????<RelativeLayout?? ????????android:id="@+id/outpatient_check_hospital"?? ????????android:layout_width="fill_parent"?? ????????android:layout_height="wrap_content"?? ????????android:layout_marginBottom="5.0dip"?? ????????android:layout_marginLeft="12.599976dip"?? ????????android:layout_marginRight="12.599976dip"?? ????????android:layout_marginTop="5.0dip"?? ????????android:gravity="center_vertical"??? ????????android:background="#AAAAAA">?? ?? ????????<LinearLayout?? ????????????android:id="@+id/linear_layout_up"?? ????????????android:layout_width="fill_parent"?? ????????????android:layout_height="wrap_content"?? ????????????android:layout_margin="10.0dip"?? ????????????android:gravity="center"?? ????????????android:orientation="horizontal"?>?? ?? ????????????<ImageView?? ????????????????android:layout_width="10dip"?? ????????????????android:layout_height="10dip"?? ????????????????android:adjustViewBounds="false"?/>?? ?? ????????????<TextView?? ????????????????android:id="@+id/tv_device_name"?? ????????????????android:layout_width="wrap_content"?? ????????????????android:layout_height="wrap_content"?? ????????????????android:layout_weight="2.0"?? ????????????????android:text="名稱"?? ????????????????android:textColor="#ff323232"?? ????????????????android:textSize="16.0sp"?? ????????????????android:typeface="monospace"?/>?? ?? ????????????<RadioButton?? ????????????????android:id="@+id/rb_light"?? ????????????????android:layout_width="wrap_content"?? ????????????????android:layout_height="wrap_content"?? ????????????????android:focusable="false"?? ????????????????android:text=""?/>?? ?????????????? ????????</LinearLayout>?? ????</RelativeLayout>?? ?? </LinearLayout>??
使用列表的頁面
[java]?view plaincopy
public?class?MainActivity?extends?Activity?{?? ????private?ListView?listView;?? ????private?ListViewAdapter?adapter;?? ????private?String[]?beans?=?new?String[]?{?"1",?"2",?"3",?"4",?"5",?"6",?"7",?? ????????????"8",?"9",?"10",?"11",?"12",?"13"?};?? ?? ????@Override?? ????protected?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.activity_main);?? ?? ????????initView();?? ?? ????}?? ?? ????private?void?initView()?{?? ?????????? ????????Log.i("htp",?"beans.size:"?+?beans.length);?? ????????listView?=?(ListView)?findViewById(R.id.listView1);?? ????????adapter?=?new?ListViewAdapter(MainActivity.this,?beans);?? ????????listView.setAdapter(adapter);?? ????????listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);?? ????}??
適配器內容,在這里面處理如何單選問題
[java]?view plaincopy
package?com.example.listviewdemo;?? ?? import?java.util.HashMap;?? import?java.util.List;?? ?? import?android.content.Context;?? import?android.view.LayoutInflater;?? import?android.view.View;?? import?android.view.ViewGroup;?? import?android.widget.BaseAdapter;?? import?android.widget.ImageView;?? import?android.widget.LinearLayout;?? import?android.widget.RadioButton;?? import?android.widget.TextView;?? ?? public?class?ListViewAdapter?extends?BaseAdapter?{?? ?? ????private?Context?context;?? ????private?String[]?beans;?? ?????? ????HashMap<String,?Boolean>?states?=?new?HashMap<String,?Boolean>();?? ?? ????class?ViewHolder?{?? ?? ????????TextView?tvName;?? ????????RadioButton?rb_state;?? ????}?? ?? ????public?ListViewAdapter(Context?context,?String[]?beans)?{?? ?????????? ????????this.beans?=?beans;?? ????????this.context?=?context;?? ????}?? ?? ????@Override?? ????public?int?getCount()?{?? ?????????? ????????return?beans.length;?? ????}?? ?? ????@Override?? ????public?Object?getItem(int?position)?{?? ?????????? ????????return?beans[position];?? ????}?? ?? ????@Override?? ????public?long?getItemId(int?position)?{?? ?????????? ????????return?position;?? ????}?? ?? ????@Override?? ????public?View?getView(final?int?position,?View?convertView,?ViewGroup?parent)?{?? ?????????? ?????????? ????????ViewHolder?holder;?? ????????String?bean?=?beans[position];?? ????????LayoutInflater?inflater?=?LayoutInflater.from(context);?? ????????if?(convertView?==?null)?{?? ????????????convertView?=?inflater.inflate(?? ????????????????????R.layout.assist_device_binding_list_item,?null);?? ????????????holder?=?new?ViewHolder();?? ?? ?? ????????????holder.tvName?=?(TextView)?convertView?? ????????????????????.findViewById(R.id.tv_device_name);?? ????????????convertView.setTag(holder);?? ????????}?else?{?? ????????????holder?=?(ViewHolder)?convertView.getTag();?? ????????}?? ?????????? ????????holder.tvName.setText(bean);?? ????????final?RadioButton?radio=(RadioButton)?convertView.findViewById(R.id.rb_light);???? ????????holder.rb_state?=?radio;???? ????????holder.rb_state.setOnClickListener(new?View.OnClickListener()?{?? ?? ????????????public?void?onClick(View?v)?{?? ?? ?????????????????? ????????????????for?(String?key?:?states.keySet())?{?? ????????????????????states.put(key,?false);?? ?? ????????????????}?? ????????????????states.put(String.valueOf(position),?radio.isChecked());?? ????????????????ListViewAdapter.this.notifyDataSetChanged();?? ????????????}?? ????????});?? ?? ????????boolean?res?=?false;?? ????????if?(states.get(String.valueOf(position))?==?null?? ????????????????||?states.get(String.valueOf(position))?==?false)?{?? ????????????res?=?false;?? ????????????states.put(String.valueOf(position),?false);?? ????????}?else?? ????????????res?=?true;?? ?? ????????holder.rb_state.setChecked(res);?? ????????return?convertView;?? ????}?? }??
總結
以上是生活随笔為你收集整理的Android中ListView与RadioButton结合----自定义单选列表的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。