Android下拉列表显示

时间: 2023-07-11 admin IT培训

Android下拉列表显示

Android下拉列表显示

懒得搬,直接搬连接。

运行显示下拉列表,点击可展开,点击子项目会将子项目显示到横线上,并且在TextView中显示选择的城市。


1.activity_main.xml页面添加Spinner控件。

activity_main.xml页面:

[html]  view plain  copy    
  1. <RelativeLayout xmlns:android=""  
  2.     xmlns:tools=""  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/tvShow"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:textSize="20sp" />  
  12.   
  13.     <Spinner  
  14.         android:id="@+id/spDwon"  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_alignParentLeft="true"  
  18.         android:layout_below="@+id/tvShow"  
  19.         android:layout_marginTop="36dp" />  
  20.   
  21. </RelativeLayout>  


2.MainActivity.java页面进行数据源的定义和适配器的配置。 MainActivity.java页面: [java]  view plain  copy    
  1. package com.example.downshow;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.os.Bundle;  
  7. import android.app.Activity;  
  8. import android.util.Log;  
  9. import android.view.Menu;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.ArrayAdapter;  
  13. import android.widget.Spinner;  
  14. import android.widget.TextView;  
  15. import android.widget.AdapterView.OnItemSelectedListener;  
  16.   
  17. public class MainActivity extends Activity implements OnItemSelectedListener{  
  18.   
  19.     private TextView tvShow;  
  20.     private Spinner spDown;  
  21.     private List<String> list;  
  22.     private ArrayAdapter<String> adapter;  
  23.       
  24.     @Override  
  25.     protected void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.activity_main);  
  28.       
  29.         tvShow=(TextView) findViewById(R.id.tvShow);  
  30.         spDown=(Spinner) findViewById(R.id.spDwon);  
  31.         tvShow.setText("您选择的城市是北京");  
  32.           
  33.         /*设置数据源*/  
  34.         list=new ArrayList<String>();  
  35.         list.add("北京");  
  36.         list.add("上海");  
  37.         list.add("广州");  
  38.         list.add("深圳");  
  39.           
  40.         /*新建适配器*/  
  41.         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);  
  42.       
  43.         /*adapter设置一个下拉列表样式,参数为系统子布局*/  
  44.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);  
  45.       
  46.         /*spDown加载适配器*/  
  47.         spDown.setAdapter(adapter);  
  48.       
  49.         /*soDown的监听器*/  
  50.         spDown.setOnItemSelectedListener(this);  
  51.     }  
  52.   
  53.     @Override  
  54.     public boolean onCreateOptionsMenu(Menu menu) {  
  55.         getMenuInflater().inflate(R.menu.main, menu);  
  56.         return true;  
  57.     }  
  58.   
  59.     @Override  
  60.     public void onItemSelected(AdapterView<?> parent, View view, int position,  
  61.             long id) {  
  62.         String cityName=adapter.getItem(position);   //获取选中的那一项  
  63.         tvShow.setText("您选择的城市是"+cityName);  
  64.     }  
  65.   
  66.     @Override  
  67.     public void onNothingSelected(AdapterView<?> arg0) {  
  68.     }  
  69. }  


3.运行就可以显示文字的下拉列表了,但是还可以自定义下拉列表样式。

图文列表 目标效果:       


1.新建item.xml页面作为子布局。 item.xml页面: [html]  view plain  copy    
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android=""  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="horizontal" >  
  6.   
  7.     <ImageView  
  8.         android:id="@+id/ivFruit"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:src="@drawable/ic_launcher" />  
  12.   
  13.     <TextView  
  14.         android:id="@+id/tvFruit"  
  15.         android:layout_gravity="center"  
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         android:text="TextView" />  
  19.   
  20. </LinearLayout>  


2.新建一个SecondActivity.java页面和activity_second.xml页面,作为显示图文下拉列表的页面。 activity_second.xml页面: [html]  view plain  copy    
  1. <RelativeLayout xmlns:android=""  
  2.     xmlns:tools=""  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".SecondActivity" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/tvShow"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="@string/hello_world" />  
  12.   
  13.     <Spinner  
  14.         android:id="@+id/spDown"  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_alignParentRight="true"  
  18.         android:layout_below="@+id/textView1"  
  19.         android:layout_marginTop="35dp" />  
  20.   
  21. </RelativeLayout>  


3.SecondActivity.java页面设置适配器添加数据源。 SecondActivity.java页面: [java]  view plain  copy    
  1. package com.example.downshow;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import android.os.Bundle;  
  9. import android.app.Activity;  
  10. import android.view.Menu;  
  11. import android.view.View;  
  12. import android.widget.AdapterView;  
  13. import android.widget.AdapterView.OnItemSelectedListener;  
  14. import android.widget.ImageView;  
  15. import android.widget.SimpleAdapter;  
  16. import android.widget.Spinner;  
  17. import android.widget.TextView;  
  18.   
  19. public class SecondActivity extends Activity implements OnItemSelectedListener{  
  20.   
  21.     private TextView tvShow;  
  22.     private Spinner spDown;  
  23.   
  24.     private SimpleAdapter adapter;  
  25.     private List<Map<String, Object>> dataList;  
  26.   
  27.     private int[] icon = { R.drawable.apple_pic, R.drawable.banana_pic,  
  28.             R.drawable.cherry_pic, R.drawable.grape_pic, R.drawable.mango_pic,  
  29.             R.drawable.orange_pic, R.drawable.pear_pic,  
  30.             R.drawable.pineapple_pic, R.drawable.strawberry_pic,  
  31.             R.drawable.watermelon_pic };  
  32.     private String[] iconName = { "苹果", "香蕉", "樱桃", "葡萄", "芒果", "橘子", "梨",  
  33.             "菠萝", "草莓", "西瓜" };  
  34.   
  35.     @Override  
  36.     protected void onCreate(Bundle savedInstanceState) {  
  37.         super.onCreate(savedInstanceState);  
  38.         setContentView(R.layout.activity_second);  
  39.   
  40.         tvShow = (TextView) findViewById(R.id.tvShow);  
  41.         spDown = (Spinner) findViewById(R.id.spDown);  
  42.         tvShow.setText("您选择的是苹果");  
  43.   
  44.         /*创建数据源*/  
  45.         dataList = new ArrayList<Map<String, Object>>();  
  46.           
  47.         /*创建简单适配器*/  
  48.         adapter = new SimpleAdapter(this, getData(), R.layout.item,  
  49.                 new String[] { "ivFruit", "tvFruit" }, new int[] { R.id.ivFruit,  
  50.                         R.id.tvFruit });  
  51.           
  52.         /*adapter设置一个下拉列表样式,参数为自己定义的子布局*/  
  53.         adapter.setDropDownViewResource(R.layout.item);  
  54.           
  55.         /*spDown加载适配器*/  
  56.         spDown.setAdapter(adapter);  
  57.           
  58.         /*spDown设置监听事件*/  
  59.         spDown.setOnItemSelectedListener(this);  
  60.     }  
  61.   
  62.     /*设置数据源*/  
  63.     private List<Map<String, Object>> getData() {  
  64.         for(int i=0;i<icon.length;i++){      //循环添加图片文字信息  
  65.             Map<String,Object> map=new HashMap<String, Object>();  
  66.             map.put("ivFruit", icon[i]);  
  67.             map.put("tvFruit",iconName[i]);  
  68.             dataList.add(map);  
  69.         }  
  70.         return dataList;  
  71.     }  
  72.   
  73.     @Override  
  74.     public boolean onCreateOptionsMenu(Menu menu) {  
  75.         getMenuInflater().inflate(R.menu.second, menu);  
  76.         return true;  
  77.     }  
  78.   
  79.     @Override  
  80.     public void onItemSelected(AdapterView<?> parent, View view, int position,  
  81.             long id) {  
  82.         tvShow.setText("您选择的是"+adapter.getItem(position));//更改显示信息  
  83.     }  
  84.   
  85.     @Override  
  86.     public void onNothingSelected(AdapterView<?> arg0) {  
  87.         // TODO Auto-generated method stub  
  88.     }  
  89. }  


4.运行就可以显示图文的目标效果了。