Android之ListView

- 日理万妓 2022-05-16 08:56 279阅读 0赞
  1. [Android入门第六篇之ListView (一)][Android_ListView] ,讲的是如何制作一个具有两行文本的 自定义控件 ,作为ListViewItem的使用方法。这篇接下来也是围绕ListViewItem,更加深入地介绍它们的用法。
  2. 首先,先来看看本文代码运行的结果,本文的Item比上一篇中的Item多出左边的图标:

0_13022587488b8b.gif

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

[xhtml] view plain copy print ?

  1. <?xml version=”1.0” encoding=”utf-8”?>
  2. <RelativeLayout
  3. android:layout_width=”fill_parent”
  4. xmlns:android=”http://schemas.android.com/apk/res/android“
  5. android:layout_height=”wrap_content”
  6. android:paddingBottom=”4dip”
  7. android:paddingLeft=”12dip”>
  8. <ImageView
  9. android:layout_width=”wrap_content”
  10. android:id=”@+id/itemImage” android:layout_height=”fill_parent”>
  11. <TextView
  12. android:text=”TextView01”
  13. android:layout_height=”wrap_content”
  14. android:layout_width=”fill_parent”
  15. android:id=”@+id/itemTitle” android:layout_toRightOf=”@+id/itemImage” android:textSize=”20dip”>
  16. <TextView
  17. android:text=”TextView02”
  18. android:layout_height=”wrap_content”
  19. android:layout_width=”fill_parent”
  20. android:id=”@+id/itemText” android:layout_toRightOf=”@+id/itemImage” android:layout_below=”@+id/itemTitle”>
  21. 解释一下 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的下面。

  1. 最后,贴出JAVA的源代码,其中重点是LayoutInflate的用法。LayoutInflate的使用方法如下:
  • LayoutInflater的作用是,把一个View的对象与XML布局文件关联并实例化。
  • View的对象实例化之后,可以通过findViewById()查找布局文件中的指定Id的组件。

[java] view plain copy print ?

  1. package com.testListView;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.ImageView;
  10. import android.widget.ListView;
  11. import android.widget.TextView;
  12. public class testListView extends Activity {
  13. ListView listView;
  14. String[] titles={ “标题1”,”标题2”,”标题3”,”标题4”};
  15. String[] texts={ “文本内容A”,”文本内容B”,”文本内容C”,”文本内容D”};
  16. int[] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. this.setTitle(“BaseAdapter for ListView”);
  22. listView=(ListView)this.findViewById(R.id.listView1);
  23. listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
  24. }
  25. public class ListViewAdapter extends BaseAdapter {
  26. View[] itemViews;
  27. public ListViewAdapter(String[] itemTitles, String[] itemTexts,
  28. int[] itemImageRes) {
  29. itemViews = new View[itemTitles.length];
  30. for (int i = 0; i < itemViews.length; i++) {
  31. itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
  32. itemImageRes[i]);
  33. }
  34. }
  35. public int getCount() {
  36. return itemViews.length;
  37. }
  38. public View getItem(int position) {
  39. return itemViews[position];
  40. }
  41. public long getItemId(int position) {
  42. return position;
  43. }
  44. private View makeItemView(String strTitle, String strText, int resId) {
  45. LayoutInflater inflater = (LayoutInflater) testListView.this
  46. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  47. // 使用View的对象itemView与R.layout.item关联
  48. View itemView = inflater.inflate(R.layout.item, null);
  49. // 通过findViewById()方法实例R.layout.item内各组件
  50. TextView title = (TextView) itemView.findViewById(R.id.itemTitle);
  51. title.setText(strTitle);
  52. TextView text = (TextView) itemView.findViewById(R.id.itemText);
  53. text.setText(strText);
  54. ImageView image = (ImageView) itemView.findViewById(R.id.itemImage);
  55. image.setImageResource(resId);
  56. return itemView;
  57. }
  58. public View getView(int position, View convertView, ViewGroup parent) {
  59. if (convertView == null)
  60. return itemViews[position];
  61. return convertView;
  62. }
  63. }

发表评论

表情:
评论列表 (有 0 条评论,279人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android ListView

    ListView作为android的经常使用的控件,在使用时,经常会忘记一些使用要点,这里记录一下一些使用过程中的需求,以便后面使用查询: 设置 监听 使用