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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)

發(fā)布時(shí)間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在上一篇 中,只是實(shí)現(xiàn)一個(gè)perference,但是點(diǎn)擊以后沒(méi)有響應(yīng)事件,我們可以定義一個(gè)一個(gè)Dialog,Dialog選項(xiàng)里面需要有圖片,文字說(shuō)明,后面還需要一個(gè)單選按鈕,所以自己寫(xiě)了一個(gè)demo,效果圖如下:

??????? 功能的完成是使用Dialog的addView()方法,把一個(gè)ListView添加進(jìn)去。ListView控件里面使用了ImageView和CheckedTextView控件,CheckedTextView是一個(gè)提供文字和選擇框的控件。如果對(duì)于CheckedTextView不熟悉,請(qǐng)自己查下文檔,在這里就不在多說(shuō)。

主要功能代碼如下:

?

[java]?view plaincopy
  • public?class?ListViewActivityextends?Activity?{??
  • ??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ??
  • ????@Override??
  • ??
  • ????public?void?onCreate(Bundle?savedInstanceState){??
  • ??
  • ????????super.onCreate(savedInstanceState);??
  • ??
  • ????????setContentView(R.layout.main);??
  • ??
  • ????????Button?button=(Button)findViewById(R.id.button);??
  • ??
  • ???????//獲取ListView??
  • ??
  • ????????final?LayoutInflater?factory?=?LayoutInflater.from(ListViewActivity.this);???
  • ??
  • ?????????????????final?View?view?=?factory.inflate(???
  • ??
  • ?????????????????????????R.layout.listview,null);??
  • ??
  • ????????final?ListView?list?=?(ListView)?view.findViewById(R.id.ListView01);???
  • ??
  • ????????//把數(shù)據(jù)項(xiàng)添加到listItem里面??
  • ??
  • ????????ArrayList<HashMap<String,Object>>?listItem?=newArrayList<HashMap<String,?Object>>();???
  • ??
  • ????????for(int?i=0;i<5;i++)???
  • ??
  • ????????{??
  • ??
  • ????????if(i==0){??
  • ??
  • ?????????????HashMap<String,Object>?map?=new?HashMap<String,Object>();???
  • ??
  • ????????????????map.put("ItemImage",?R.drawable.checked);??
  • ??
  • ????????????????map.put("ItemTitle",?"1");?????
  • ??
  • ????????????????listItem.add(map);??
  • ??
  • ????????}else?if(i==1){??
  • ??
  • ?????????????HashMap<String,Object>?map?=new?HashMap<String,Object>();???
  • ??
  • ????????????????map.put("ItemImage",?R.drawable.c);???
  • ??
  • ????????????????map.put("ItemTitle",?"2");???
  • ??
  • ????????????????listItem.add(map);??
  • ??
  • ????????}else?if(i==2){??
  • ??
  • ?????????????HashMap<String,Object>?map?=new?HashMap<String,Object>();???
  • ??
  • ????????????????map.put("ItemImage",?R.drawable.d);???
  • ??
  • ????????????????map.put("ItemTitle",?"3");????
  • ??
  • ????????????????listItem.add(map);??
  • ??
  • ????????}else?if(i==3){??
  • ??
  • ?????????????HashMap<String,Object>?map?=new?HashMap<String,Object>();???
  • ??
  • ????????????????map.put("ItemImage",?R.drawable.d);???
  • ??
  • ????????????????map.put("ItemTitle",?"4");?????
  • ??
  • ????????????????listItem.add(map);??
  • ??
  • ????????}else{??
  • ??
  • ?????????????HashMap<String,Object>?map?=new?HashMap<String,Object>();???
  • ??
  • ????????????????map.put("ItemImage",?R.drawable.e);???
  • ??
  • ????????????????map.put("ItemTitle",?"5");????
  • ??
  • ????????????????listItem.add(map);??
  • ??
  • ????????}??
  • ??
  • ????????}??
  • ??
  • ???????//獲得SimpleAdapter,并且把它添加到listView中??
  • ??
  • ????????SimpleAdapter?listItemAdapter?=new?SimpleAdapter(this,listItem,???
  • ??
  • ???????????????R.layout.item,???????????
  • ??
  • ???????????????new?String[]?{"ItemImage","ItemTitle"},?????
  • ??
  • ???????????????new?int[]?{R.id.imageView,R.id.checkedTextView}???
  • ??
  • ???????????);???
  • ??
  • ????????????????
  • ??
  • ???????????list.setAdapter(listItemAdapter);???
  • ??
  • ???????????list.setOnItemClickListener(new?OnItemClickListener(){???
  • ??
  • ???????
  • ??
  • ????????????????public?void?onItemClick(AdapterView<?>arg0,?View?arg1,int?arg2,???
  • ??
  • ????????????????????????long?arg3)?{??
  • ??
  • ??????????????//把所有的單選全部設(shè)為非選中??
  • ??
  • ?????????????????for(int?i=0;i<arg0.getCount();i++)??
  • ??
  • ?????????????????{??
  • ????????????????????View?v?=?list.getChildAt(i);??
  • ??
  • ????????????????????CheckedTextViewcheckText=(CheckedTextView)v.findViewById(R.id.checkedTextView);??
  • ??
  • ????????????????????checkText.setChecked(false);??
  • ??
  • ?????????????????}??
  • ??????????????//獲得點(diǎn)擊項(xiàng)的CheckedTextView,并設(shè)為選中??
  • ?????????????????CheckedTextViewcheck=(CheckedTextView)arg1.findViewById(R.id.checkedTextView);?????????????
  • ??????????????????check.setChecked(true);??
  • ???????????????}???
  • ???????????});??
  • ??
  • ???????????final?AlertDialog.Builder?builder=new?AlertDialog.Builder(ListViewActivity.this);??
  • ???????????button.setOnClickListener(new?View.OnClickListener()?{??
  • ??????????????public?void?onClick(View?v)?{?????????????????
  • ??????????????????builder.setTitle("Dialog");??
  • ??????????????????builder.setView(list);??
  • ???????????????builder.setNegativeButton("cencel",null);??
  • ???????????????builder.create().show();???????????????????????
  • ??????????????}??
  • ???????????});??
  • ????}??
  • }??
  • ?

    ?

    其中item.xml代碼如下

    ?

    [html]?view plaincopy
  • <?xml?version="1.0"encoding="utf-8"?>??
  • ??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ??
  • ????android:orientation="horizontal"??
  • ??
  • ????android:layout_width="fill_parent"??
  • ??
  • ????android:layout_height="fill_parent"??
  • ??
  • ????>??
  • ??
  • ????<ImageView??
  • ??
  • ???????android:id="@+id/imageView"???
  • ??
  • ????????android:layout_width="wrap_content"??
  • ??
  • ????????android:layout_height="wrap_content"??
  • ??
  • ????????/>??
  • ??
  • ????<CheckedTextView?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ??
  • ????android:id="@+id/checkedTextView"??
  • ??
  • ????android:layout_width="match_parent"??
  • ??
  • ????????android:layout_height="?android:attr/listPreferredItemHeight"??
  • ??
  • ????android:textAppearance="?android:attr/textAppearanceLarge"??
  • ??
  • ????android:gravity="center_vertical"??
  • ??
  • ????android:checkMark="?android:attr/listChoiceIndicatorSingle"??
  • ??
  • ????android:paddingLeft="6dip"??
  • ??
  • ????android:paddingRight="6dip"??
  • ??
  • />??
  • ??
  • </LinearLayout>??
  • ?

    ?

    Listview.xml文件如下

    ?

    [html]?view plaincopy
  • <?xml?version="1.0"encoding="utf-8"?>?????
  • ??
  • <ListView?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ??
  • ?????????android:layout_width="wrap_content"????
  • ??
  • ??????????android:layout_height="wrap_content"????
  • ??
  • ??????????android:id="@+id/ListView01"???
  • ??
  • ??????????/>???
  • ?

    應(yīng)該特別注意listview.xml不要把他寫(xiě)在一個(gè)父控件下如:LinearLayout等,如果這樣會(huì)出現(xiàn)錯(cuò)誤,。還有就是如果你listview添加過(guò)多選項(xiàng),當(dāng)單擊的時(shí)候會(huì)出現(xiàn)空指針異常。

    ?

    另外,Demo源代碼可以在此下載。

    http://download.csdn.net/source/3494251

    ?

    2012年7月19號(hào)補(bǔ)充:

    ???????????當(dāng)listView中含有超過(guò)一屏幕的時(shí)候,采用以上方法會(huì)有空指針異常,是因?yàn)槲达@示的View為空,但是上面代碼中要遍歷所有代碼,所以為空。如何優(yōu)化,可以參考

    ListView Item 選擇問(wèn)題解決之道

    這篇文章。

    ?

    ???????

    轉(zhuǎn)載于:https://www.cnblogs.com/kevincode/p/3838569.html

    總結(jié)

    以上是生活随笔為你收集整理的自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。