1、ListView的使用 |
1.1ListView的功能就像之前的Spinner、AutoCompleteTextView中添加额外的资源文件一样,可以把其他资源文件的信息作为一个整体加载到ListView的子列表中。
新建一个listview.xml文件,文件中只有一个ListView组件,组件中的信息需要通过另外一个布局文件加载到ListView中,代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <ListView 9 android:id="@+id/lv_showlistviewitem" 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content"> 12 </ListView> 13 </LinearLayout>
新建listview_extra_layou.xml,代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <ImageView 9 android:id="@+id/iv_showimage" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:src="@drawable/d1"/> 13 <TextView 14 android:id="@+id/tv_showtextviewinfo" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:text="@string/app_name"/> 18 19 </LinearLayout>
新建Activity类,ListViewDemoActivity,完整代码如下:
1 package com.example.basiccomponent2; 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.app.Activity; 9 import android.os.Bundle; 10 import android.widget.ListView; 11 import android.widget.SimpleAdapter; 12 13 public class ListViewDemoActivity extends Activity { 14 private ListView lv_showlistviewitem = null; 15 private List<Map<String,String>> list = new ArrayList<Map<String,String>>(); 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 super.setContentView(R.layout.listview_layout); 20 lv_showlistviewitem = (ListView)super.findViewById(R.id.lv_showlistviewitem); 21 //获得listview_extra_layout.xml各组件id名 22 String id_name[] ={ 23 "iv_showimage", 24 "tv_showtextviewinfo" 25 }; 26 //获得listview_extra_layout.xml中id名对应的R文件id 27 int id_rid[] = { 28 R.id.iv_showimage, 29 R.id.tv_showtextviewinfo 30 }; 31 //定义图片数组数据 32 int images[] = { 33 R.drawable.d1, 34 R.drawable.d2, 35 R.drawable.d3 36 }; 37 //定义数组数据 38 String info[] = { 39 "文本1","文本2" 40 }; 41 //循环把图片和文本加入到map集合中,再把map集合数据添加到list集合中。 42 for(int i = 0; i<info.length;i++){ 43 Map<String,String> map =new HashMap<String,String>(); 44 map.put("iv_showimage", images[i]+""); 45 map.put("tv_showtextviewinfo", info[i]); 46 list.add(map); 47 } 48 //通过adpter加载数据 49 SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.listview_extra_layout, id_name, id_rid); 50 //组件设置适配器 51 lv_showlistviewitem.setAdapter(adapter); 52 } 53 }
运行效果:
2、GridView的使用 |
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <GridView 9 android:id="@+id/gv_showinfo" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:numColumns="3"/> 13 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:gravity="center" 7 android:orientation="vertical" > 8 9 <ImageView 10 android:id="@+id/iv_showgvitemimg" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:src="@drawable/ic_launcher"/> 14 <TextView 15 android:id="@+id/tv_showgvitemtxt" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content"/> 18 </LinearLayout>
1 package com.example.entity; 2 3 public class GridViewStudent { 4 private int photo; // 存放学生图片id 5 private String name; // 存放学生姓名 6 7 /* 8 * 无参构造方法 9 */ 10 public GridViewStudent(){} 11 /* 12 * 全参构造方法 13 */ 14 public GridViewStudent(int photo,String name){ 15 this.photo = photo; 16 this.name = name; 17 } 18 /* 19 * gettter方法 20 */ 21 public int getPhoto() { 22 return photo; 23 } 24 /* 25 * settter方法 26 */ 27 public void setPhoto(int photo) { 28 this.photo = photo; 29 } 30 /* 31 * gettter方法 32 */ 33 public String getName() { 34 return name; 35 } 36 /* 37 * settter方法 38 */ 39 public void setName(String name) { 40 this.name = name; 41 } 42 43 }
1 package com.example.adapter; 2 3 import java.util.List; 4 5 import android.content.Context; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 import android.widget.BaseAdapter; 10 import android.widget.ImageView; 11 import android.widget.TextView; 12 13 import com.example.activity.R; 14 import com.example.entity.GridViewStudent; 15 16 public class GridViewDemoAdapter extends BaseAdapter { 17 18 private Context context; //定义上下文属性(即传过来的GridViewDemoActivity类) 19 private int resource; //定义资源文件(即传过来的gridviewdemo_item_layout.xml文件) 20 private List<GridViewStudent> list; //定义list集合,类型为GridViewStudent 21 private LayoutInflater inflater; //定义装载布局 22 /* 23 * 全参构造方法,为类中的属性初始化 24 */ 25 public GridViewDemoAdapter(Context context,int resource,List<GridViewStudent> list){ 26 this.context = context; 27 this.resource = resource; 28 this.list = list; 29 inflater = LayoutInflater.from(context);//初始化LayoutInflater 30 } 31 /* 32 * 获取item个数 33 */ 34 @Override 35 public int getCount() { 36 //如果list集合不为空,则返回集合大小,否则返回0 37 if(list != null){ 38 return list.size(); 39 } 40 return 0; 41 } 42 /* 43 * 获取item 44 */ 45 @Override 46 public Object getItem(int position) { 47 return list.get(position); 48 } 49 /* 50 * 获取itemid 51 */ 52 @Override 53 public long getItemId(int position) { 54 return 0; 55 } 56 /* 57 *返回一个布局 58 */ 59 @Override 60 public View getView(int position, View convertView, ViewGroup parent) { 61 if(convertView==null){ 62 convertView = inflater.inflate(resource, null); 63 } 64 TextView tv_showgvitemtxt = (TextView)convertView.findViewById(R.id.tv_showgvitemtxt); 65 ImageView iv_showgvitemimg = (ImageView)convertView.findViewById(R.id.iv_showgvitemimg); 66 tv_showgvitemtxt.setText(list.get(position).getName()); 67 iv_showgvitemimg.setImageResource(list.get(position).getPhoto()); 68 return convertView; 69 } 70 71 }
1 package com.example.activity; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.widget.GridView; 9 10 import com.example.adapter.GridViewDemoAdapter; 11 import com.example.entity.GridViewStudent; 12 13 public class GridViewDemoActivtiy extends Activity { 14 private GridView gv_showinfo = null; //声明对象 15 16 private List<GridViewStudent> list = new ArrayList<GridViewStudent>();// 声明list集合,用于存储数据 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 super.setContentView(R.layout.gridviewdemo_layout);// 设置容器, 22 gv_showinfo = (GridView) super.findViewById(R.id.gv_showinfo);// 初始化gridview 23 24 //往list中添加值 25 GridViewStudent gvs1 = new GridViewStudent(R.drawable.ic_launcher, "张三"); 26 list.add(gvs1); 27 GridViewStudent gvs2 = new GridViewStudent(R.drawable.ic_launcher, "李四"); 28 list.add(gvs2); 29 GridViewStudent gvs3 = new GridViewStudent(R.drawable.ic_launcher, "王五"); 30 list.add(gvs3); 31 GridViewStudent gvs4 = new GridViewStudent(R.drawable.ic_launcher, "赵六"); 32 list.add(gvs4); 33 GridViewStudent gvs5 = new GridViewStudent(R.drawable.ic_launcher, "王二"); 34 list.add(gvs5); 35 GridViewStudent gvs6 = new GridViewStudent(R.drawable.ic_launcher, "钱七"); 36 list.add(gvs6); 37 //设置Adapter 38 GridViewDemoAdapter gridViewAdapter = new GridViewDemoAdapter( 39 GridViewDemoActivtiy.this, 40 R.layout.gridviewdemo_item_layout, 41 list); 42 gv_showinfo.setAdapter(gridViewAdapter); 43 } 44 }
运行效果: