日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中ListView与RadioButton结合----自定义单选列表

發布時間:2025/6/15 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中ListView与RadioButton结合----自定义单选列表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候我們需要制作自定義的單選列表,但是會遇到一些問題,比如多選,假選問題,所以網上找了找資料,整理一個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()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????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;??
  • ????//?用于記錄每個RadioButton的狀態,并保證只可選一個??
  • ????HashMap<String,?Boolean>?states?=?new?HashMap<String,?Boolean>();??
  • ??
  • ????class?ViewHolder?{??
  • ??
  • ????????TextView?tvName;??
  • ????????RadioButton?rb_state;??
  • ????}??
  • ??
  • ????public?ListViewAdapter(Context?context,?String[]?beans)?{??
  • ????????//?TODO?Auto-generated?constructor?stub??
  • ????????this.beans?=?beans;??
  • ????????this.context?=?context;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?int?getCount()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????return?beans.length;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?Object?getItem(int?position)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????return?beans[position];??
  • ????}??
  • ??
  • ????@Override??
  • ????public?long?getItemId(int?position)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????return?position;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?View?getView(final?int?position,?View?convertView,?ViewGroup?parent)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????//?頁面??
  • ????????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.rb_state?=?(RadioButton)?convertView??
  • //??????????????????.findViewById(R.id.rb_light);??
  • ????????????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结合----自定义单选列表的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。