SimpleAdapter 的應用day5

//SimpleAdapter -- 自定義下拉列表android

//下拉列表裏面 有:每一張圖片對應一個數據
//格式數組

       圖片  x
       圖片  xx
       圖片  xxx
//選中完 後 在 自定義的下拉列表下面的
//TextView控件 顯示選中的數據(圖片不用顯示)ide

一、在res/layout裏面佈局界面 有2個.xml文件佈局

//第一個.xml文件有一個Spinner 控件和 TextViewthis

//第二個.xml文件時本身 自定義的下拉列表佈局
//這樣就不用用android定義的下拉列表了xml

//activity_main.xml 代碼對象

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >圖片

   
   
    <Spinner
        android:id="@+id/simp_spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         />utf-8

</LinearLayout>ci

----------------------------

//simpletespinner.xml 代碼

<?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="horizontal" >
   
    <ImageView
        android:id="@+id/imageview"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:scaleType="centerInside"
       />
    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"放
        android:layout_height="wrap_content"
        android:gravity="center"/>

</LinearLayout>
----------------------

二、在res/drawable裏面放入須要的圖片

-----------------------

三、在MainActivity裏 實現功能

代碼

public class MainActivity extends Activity {
//聲明Spinner 對象
private Spinner spinner;
//聲明自定義 適配器對象
private SimpleAdapter simp_adapter;
private TextView textview;
//要用的數據 用數組 裝起來
private String[] data = {"大人","小孩","青少年","老年人"};
private int[] image = {R.drawable.bump,R.drawable.calculator,
  R.drawable.music,R.drawable.radio};
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  spinner = (Spinner) this.findViewById(R.id.simp_spinner);
  textview = (TextView) this.findViewById(R.id.textview);
  
  List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
//用循環 將 數據與圖片 裝進map裏 而後 在把map 當作一個對象 一個對象的 裝進List裏
  for(int i = 0;i<data.length;i++){
   Map<String,Object> map = new HashMap<String, Object>();
   map.put("data", data[i]);
   map.put("image", image[i]);
   list.add(map);
  }
//new 一個適配器
//第二個參數 -- 要放到自定義 下拉列表的數據
//第三個參數 -- 本身定義的佈局.xml文件 名字
//第四個參數 -- 字符串數組 -- 裏面放map的鍵
//第五個參數 -- 整型數組 -- 裏面放res/layout本身定義的.xml文件 裏面 控件的id
  simp_adapter = new SimpleAdapter(this, list, R.layout.simpletespinner,
new String[] {"image","data"}, new int[] {R.id.imageview,R.id.textview});
  
  spinner.setAdapter(simp_adapter);
  
  spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

   @Override
   public void onItemSelected(AdapterView<?> parent, View view,
     int position, long id) {
    // TODO Auto-generated method stub
//要設置 TextView 就要獲取 自定義下拉列表 選中的 數據 的id
//而後經過這個id去獲取鍵的 -- 值 -- 這樣就能夠 設置了
    Map<String,Object> m = (Map<String, Object>) spinner.getSelectedItem();
   //Map<String, Object> m = (Map<String, Object>) simp_adapter.getItem(position);
    textview.setText(m.get("data") + "");
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub 
   }
  });
 }
}

------------------------------------------------------------

AutocompleteTextView 控件的使用day5.1

//pull解析
//輸入一個字 自動檢索全部城市

一、在res/layout佈局一個AutoCompleteTextView 控件

代碼

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <AutoCompleteTextView
        android:id="@+id/autocompletetextview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="1"
        android:hint="請輸入城市名"
         />

</RelativeLayout>
---------------------
二、在res/layout放一個須要解析的.xml文件

.xml文件如

<?xml version="1.0" encoding="UTF-8"?>
<citylist>
 <p p_id = "01">
 <pn>北京</pn>
 <c c_id="0101"><cn>北京</cn>
  <d d_id="101010100">北京</d>
  <d d_id="101010200">海淀</d>
  <d d_id="101010300">朝陽</d>
  <d d_id="101010400">順義</d>
  <d d_id="101010500">懷柔</d>
  <d d_id="101010600">通州</d>
  <d d_id="101010700">昌平</d>
  <d d_id="101010800">延慶</d>
  <d d_id="101010900">豐臺</d>
  <d d_id="101011000">石景山</d>
  <d d_id="101011100">大興</d>
  <d d_id="101011200">房山</d>
  <d d_id="101011300">密雲</d>
  <d d_id="101011400">門頭溝</d>
  <d d_id="101011500">平谷</d>
 </c>
 </p>
</citylist>

--------------------
三、而後在MainActivity 實現 自動檢索功能

代碼

public class MainActivity extends Activity {

//聲明自動填充 控件的對象private AutoCompleteTextView auto;//聲明一個適配器private ArrayAdapter<String> c_adapter; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);//利用getResources方法.getXml方法來獲取res/目錄下的xml文件   XmlPullParser parser = getResources().getXml(R.layout.citys_weather);//AutoCompleteTextView 能夠自動 填充//只需把適配器丟給 它的 對象就能夠  auto = (AutoCompleteTextView) this.findViewById(R.id.autocompletetextview);  //用一個List集合把城市裝起來//定義一個City_data方法 把XmlPullParser 對象傳進去 用pull解析//而後 返回一個集合 裏面裝的是 城市  List<String> city_list = City_data(parser);  c_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,city_list);    auto.setAdapter(c_adapter);   }//pull解析 private List<String> City_data(XmlPullParser parser) {//建立一個List集合 裝 城市數據  List<String> c_list = new ArrayList<String>();    try {   int type = parser.getEventType();   while(type != XmlPullParser.END_DOCUMENT){    switch(type){    case XmlPullParser.START_TAG:     if("d".equals(parser.getName())){      c_list.add(parser.nextText());     }     break;    }    type = parser.next();   }  } catch (Exception e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    return c_list; }}

相關文章
相關標籤/搜索