当前位置: 移动技术网 > IT编程>移动开发>Android > Android入门之ListView应用解析(二)

Android入门之ListView应用解析(二)

2019年07月24日  | 移动技术网IT编程  | 我要评论

吴亚馨资料,施乐工程复印机,soso指数

上一篇关于android中listview的介绍讲的是如何制作一个具有两行文本的自定义控件,作为listview的item的使用方法。本文接下来也是围绕listview和item,更加深入地介绍它们的用法。

首先,先来看看本文代码运行的结果,本文的item比上一篇中的item多出左边的图标:

main.xml的源代码,跟上一篇的一样,这里就不作解释了,直接贴出item.xml的代码,就是它实现imageitem的ui:

<?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> 

解释一下 item.xml的代码:这里使用了relativelayout布局,控件的关键的属性是:

itemtitle的属性 android:layout_torightof="@+id/itemimage" ,itemtitle在itemimage的右边;

itemtext的属性 android:layout_torightof="@+id/itemimage",itemtext在itemimage的右边, android:layout_below="@+id/itemtitle", itemtext 在 itemtitle的下面。

最后,贴出java的源代码,代码中的重点是layoutinflate的用法。layoutinflate的使用方法如下:

layoutinflater的作用是,把一个view的对象与xml布局文件关联并实例化。
view的对象实例化之后,可以通过findviewbyid()查找布局文件中的指定id的组件。

java代码如下:

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;
 }
 }

}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网