安卓中各种listView的使用

转自http://blog.csdn.net/hellogv/article/details/4542668

SimpleAdapter:

ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:

1.准备ListView要显示的数据

2.使用 一维或多维 动态数组 保存数据; 

2.构建适配器 简单地来说, 适配器就是 Item数组 动态数组 有多少元素就生成多少个Item;

3.把 适配器 添加到ListView,并显示出来。  

接下来,看看本文代码所实现的ListView:

101631_ECGd_2480757.png

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 

        android:layout_width="fill_parent" 

        xmlns:android="
http://schemas.android.com/apk/res/android
" 

        android:orientation="vertical"

        android:layout_height="wrap_content" 

        android:id="@+id/MyListItem" 

        android:paddingBottom="3dip" 

        android:paddingLeft="10dip">

        <TextView 

                android:layout_height="wrap_content" 

                android:layout_width="fill_parent" 

                android:id="@+id/ItemTitle" 

                android:textSize="30dip">

        </TextView>

        <TextView 

                android:layout_height="wrap_content" 

                android:layout_width="fill_parent" 

                android:id="@+id/ItemText">

        </TextView>

</LinearLayout>
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //绑定XML中的ListView,作为Item的容器

        ListView list = (ListView) findViewById(R.id.MyListView);

        

        //生成动态数组,并且转载数据

        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

        for(int i=0;i<30;i++)

        {

         HashMap<String, String> map = new HashMap<String, String>();

         map.put("ItemTitle", "This is Title.....");

         map.put("ItemText", "This is text.....");

         mylist.add(map);

        }

        //生成适配器,数组===》ListItem

        SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释

                                              mylist,//数据来源 

                                              R.layout.my_listitem,//ListItem的XML实现

                                              

                                              //动态数组与ListItem对应的子项        

                                              new String[] {"ItemTitle", "ItemText"}, 

                                              

                                              //ListItem的XML文件里面的两个TextView ID

                                              new int[] {R.id.ItemTitle,R.id.ItemText});

        //添加并且显示

        list.setAdapter(mSchedule);

    }

BaseAdapter :

102459_i90S_2480757.png

item.xml

<?xml version="1.0" encoding="utf-8"?>  

<RelativeLayout   

         android:layout_width="fill_parent"   

         xmlns:android="
http://schemas.android.com/apk/res/android
"   

         android:layout_height="wrap_content"   

         android:paddingBottom="4dip"   

         android:paddingLeft="12dip">  

         <ImageView   

               android:layout_width="wrap_content"   

               android:id="@+id/itemImage" android:layout_height="fill_parent">   

         </ImageView>  

         <TextView   

               android:text="TextView01"   

               android:layout_height="wrap_content"   

               android:layout_width="fill_parent"   

               android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip">  

         </TextView>  

         <TextView   

               android:text="TextView02"   

               android:layout_height="wrap_content"   

               android:layout_width="fill_parent"   

               android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle">  

         </TextView>  

</RelativeLayout>
package com.testListView;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
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.TextView;
public class testListView extends Activity {
 ListView listView;
 String[] titles={"标题1","标题2","标题3","标题4"};
 String[] texts={"文本内容A","文本内容B","文本内容C","文本内容D"};
 int[] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  this.setTitle("BaseAdapter for ListView");
  listView=(ListView)this.findViewById(R.id.listView1);
  listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
 }
 public class ListViewAdapter extends BaseAdapter {
  View[] itemViews;
  public ListViewAdapter(String[] itemTitles, String[] itemTexts,
    int[] itemImageRes) {
   itemViews = new View[itemTitles.length];
   for (int i = 0; i < itemViews.length; i++) {
    itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
      itemImageRes[i]);
   }
  }
  public int getCount() {
   return itemViews.length;
  }
  public View getItem(int position) {
   return itemViews[position];
  }
  public long getItemId(int position) {
   return position;
  }
  private View makeItemView(String strTitle, String strText, int resId) {
   LayoutInflater inflater = (LayoutInflater) testListView.this
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   // 使用View的对象itemView与R.layout.item关联
   View itemView = inflater.inflate(R.layout.item, null);
   // 通过findViewById()方法实例R.layout.item内各组件
   TextView title = (TextView) itemView.findViewById(R.id.itemTitle);
   title.setText(strTitle);
   TextView text = (TextView) itemView.findViewById(R.id.itemText);
   text.setText(strText);
   ImageView image = (ImageView) itemView.findViewById(R.id.itemImage);
   image.setImageResource(resId);
   
   return itemView;
  }
  public View getView(int position, View convertView, ViewGroup parent) {
   if (convertView == null)
    return itemViews[position];
   return convertView;
  }
 }
}

 

 

转载于:https://my.oschina.net/u/2480757/blog/515086

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值