android ListView几种使用

来源:互联网 发布:四选一数据选择器 编辑:程序博客网 时间:2024/04/29 20:12

1、最简单的使用

listview  = (ListView)findViewById(R.id.list);listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
添加数据的方法:

private List<String> getData1(){List<String> data = new ArrayList<String>();for(int i=0;i<10;i++){data.add("测试时"+i);}return data;}
2、使用SimpleAdapter可自定义布局,添加各种控件

SimpleAdapter sim = new SimpleAdapter(getApplicationContext(), getData(), R.layout.customlist,new String[]{"img","title","info"},new int[]{R.id.img,R.id.title,R.id.info});listview.setAdapter(sim);
添加数据方法:
private List<Map<String, Object>> getData()      {          List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();          Map<String, Object> map;          for(int i=0;i<20;i++)          {              map = new HashMap<String, Object>();              map.put("img", R.drawable.ic_launcher);              map.put("title", "xingixng");              map.put("info", "海贼王、龙珠超。。。。");              list.add(map);          }          return list;    }  

布局代码:

<?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/img"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:layout_margin="5sp"/>    <LinearLayout         android:orientation="vertical"        android:layout_width="wrap_content"         android:layout_height="wrap_content"><TextView android:id="@+id/title"             android:layout_width="wrap_content"            android:layout_height="wrap_content"             android:textSize="22sp" />                <TextView android:id="@+id/info"             android:layout_width="wrap_content"            android:layout_height="wrap_content"             android:textSize="13sp" />     </LinearLayout></LinearLayout>

3、使用BaseAdapter适配器,item里面的自定义布局代码同上

data = getData(); MyAdapter adapter = new MyAdapter(this);listview.setAdapter(adapter);
通过继承BaseAdapter代码实现

public class MyAdapter extends BaseAdapter      {              private LayoutInflater mInflater = null;          private MyAdapter(Context context)          {              //根据context上下文加载布局,这里的是Demo17Activity本身,即this              this.mInflater = LayoutInflater.from(context);          }            @Override          public int getCount() {              //How many items are in the data set represented by this Adapter.              //在此适配器中所代表的数据集中的条目数              return data.size();          }            @Override          public Object getItem(int position) {              // Get the data item associated with the specified position in the data set.              //获取数据集中与指定索引对应的数据项              return position;          }            @Override          public long getItemId(int position) {              //Get the row id associated with the specified position in the list.              //获取在列表中与指定索引对应的行id              return position;          }                    //Get a View that displays the data at the specified position in the data set.          //获取一个在数据集中指定索引的视图来显示数据          @Override          public View getView(int position, View convertView, ViewGroup parent) {              ViewHolder holder = null;              //如果缓存convertView为空,则需要创建View              if(convertView == null)              {                  holder = new ViewHolder();                //根据自定义的Item布局加载布局                  convertView = mInflater.inflate(R.layout.customlist, null);                  holder.img = (ImageView)convertView.findViewById(R.id.img);                  holder.title = (TextView)convertView.findViewById(R.id.title);                  holder.info = (TextView)convertView.findViewById(R.id.info);                  //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag                  convertView.setTag(holder);              }else              {                  holder = (ViewHolder)convertView.getTag();              }              holder.img.setBackgroundResource((Integer)data.get(position).get("img"));              holder.title.setText((String)data.get(position).get("title"));              holder.info.setText((String)data.get(position).get("info"));                            return convertView;          }      }  //ViewHolder静态类      static class ViewHolder      {          public ImageView img;          public TextView title;          public TextView info;      }  
所有代码:

package com.example.listview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;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.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;public class MainActivity extends Activity {private ListView listview;private List<Map<String,Object>> data;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listview  = (ListView)findViewById(R.id.list);//listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));//data = getData(); //MyAdapter adapter = new MyAdapter(this);//listview.setAdapter(adapter);SimpleAdapter sim = new SimpleAdapter(getApplicationContext(), getData(), R.layout.customlist,new String[]{"img","title","info"},new int[]{R.id.img,R.id.title,R.id.info});listview.setAdapter(sim);}private List<String> getData1(){List<String> data = new ArrayList<String>();for(int i=0;i<10;i++){data.add("测试时"+i);}return data;}private List<Map<String, Object>> getData()      {          List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();          Map<String, Object> map;          for(int i=0;i<10;i++)          {              map = new HashMap<String, Object>();              map.put("img", R.drawable.ic_launcher);              map.put("title", "xingixng");              map.put("info", "海贼王、龙珠超。。。。");              list.add(map);          }          return list;    }   public class MyAdapter extends BaseAdapter      {              private LayoutInflater mInflater = null;          private MyAdapter(Context context)          {              //根据context上下文加载布局,这里的是Demo17Activity本身,即this              this.mInflater = LayoutInflater.from(context);          }            @Override          public int getCount() {              //How many items are in the data set represented by this Adapter.              //在此适配器中所代表的数据集中的条目数              return data.size();          }            @Override          public Object getItem(int position) {              // Get the data item associated with the specified position in the data set.              //获取数据集中与指定索引对应的数据项              return position;          }            @Override          public long getItemId(int position) {              //Get the row id associated with the specified position in the list.              //获取在列表中与指定索引对应的行id              return position;          }                    //Get a View that displays the data at the specified position in the data set.          //获取一个在数据集中指定索引的视图来显示数据          @Override          public View getView(int position, View convertView, ViewGroup parent) {              ViewHolder holder = null;              //如果缓存convertView为空,则需要创建View              if(convertView == null)              {                  holder = new ViewHolder();                //根据自定义的Item布局加载布局                  convertView = mInflater.inflate(R.layout.customlist, null);                  holder.img = (ImageView)convertView.findViewById(R.id.img);                  holder.title = (TextView)convertView.findViewById(R.id.title);                  holder.info = (TextView)convertView.findViewById(R.id.info);                  //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag                  convertView.setTag(holder);              }else              {                  holder = (ViewHolder)convertView.getTag();              }              holder.img.setBackgroundResource((Integer)data.get(position).get("img"));              holder.title.setText((String)data.get(position).get("title"));              holder.info.setText((String)data.get(position).get("info"));                            return convertView;          }      }  //ViewHolder静态类      static class ViewHolder      {          public ImageView img;          public TextView title;          public TextView info;      }  }
main.xml布局代码:

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ListView        android:id="@+id/list"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /></RelativeLayout>









0 0
原创粉丝点击