TShopping

 找回密碼
 註冊
搜索
查看: 1570|回復: 0
打印 上一主題 下一主題

[教學] [Android智慧型手機設計_ListView元件]

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-5-31 21:07:37 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
完成圖



1.主layout main.xml建立 TextView ListView
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10. <TextView
  11. android:id="@+id/textView1"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="@string/hello_world" />

  15. <ListView
  16. android:id="@+id/listView1"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:layout_alignLeft="@+id/textView1"
  20. android:layout_below="@+id/textView1" >
  21. </ListView>
  22. </RelativeLayout>
複製代碼


2.建立listview.xml 上面有LinearLayout  ImageView TextView

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/LinearLayout2"
  4. android:layout_width="100dp"
  5. android:layout_height="100dp"
  6. android:orientation="horizontal">
  7. <ImageView
  8. android:id="@+id/imageView1"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. />
  12. <TextView
  13. android:id="@+id/textView1"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. />
  17. </LinearLayout>
複製代碼

3.主程式 MainActivity.java

  1. package com.example.lv;


  2. //匯入類別庫
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.view.LayoutInflater;
  7. import android.view.Menu;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.AdapterView;
  11. import android.widget.BaseAdapter;
  12. import android.widget.ImageView;
  13. import android.widget.LinearLayout;
  14. import android.widget.ListView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17. import android.widget.AdapterView.OnItemClickListener;

  18. public class MainActivity extends Activity {
  19. //宣告資料型態
  20. ListView listView;


  21. //建立 ImageTextAdapter 繼承於BaseAdapter
  22. class ImageTextAdapter extends BaseAdapter{
  23. //layout擴充器
  24. LayoutInflater layoutInflater;

  25. //建立圖片陣列 images ,圖片必須先匯入圖片檔案
  26. Integer images[]={R.drawable.baby0,R.drawable.baby1,R.drawable.baby2,R.drawable.baby3,R.drawable.baby4
  27. ,R.drawable.baby5,R.drawable.baby6,R.drawable.baby7,R.drawable.baby8,R.drawable.baby9,R.drawable.baby10
  28. ,R.drawable.baby11,R.drawable.baby12,R.drawable.baby13,R.drawable.baby14,R.drawable.baby15,R.drawable.baby16
  29. ,R.drawable.baby17,R.drawable.baby18,R.drawable.baby19,R.drawable.baby20};


  30. //建立 ViewHolder 讓LinearLayout 裡的 ImageView TextView 做一次讀入記憶體
  31. private class ViewHolder {
  32. ImageView imageView;
  33. TextView textView;
  34. }
  35. //建構元
  36. public ImageTextAdapter(Context context) {
  37. layoutInflater =
  38. (LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
  39. }
  40. @Override
  41. //獲取圖片張數
  42. public int getCount() {
  43. // TODO 自動產生的方法 Stub
  44. return images.length;
  45. }

  46. @Override
  47. public Object getItem(int position) {
  48. // TODO 自動產生的方法 Stub
  49. return position;
  50. }

  51. @Override
  52. public long getItemId(int position) {
  53. // TODO 自動產生的方法 Stub
  54. return position;
  55. }

  56. @Override
  57. public View getView(int position, View convertView, ViewGroup parent) {

  58. //如果convertView為空,讀取預設檔案到viewHolder並套用到listview.xml,不然用現有檔案
  59. ViewHolder viewHolder;
  60. if (convertView == null) {
  61. convertView = layoutInflater.inflate(R.layout.listview, null);
  62. viewHolder = new ViewHolder();
  63. viewHolder.textView = (TextView) convertView.findViewById(R.id.textView1);
  64. viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView1);
  65. convertView.setTag(viewHolder);
  66. } else {
  67. viewHolder = (ViewHolder) convertView.getTag();
  68. }
  69. viewHolder.imageView.setImageResource(images[position]);
  70. viewHolder.textView.setText("出生 " + (position + 1)+" 天");
  71. return convertView;
  72. }        
  73. }
  74. @Override
  75. protected void onCreate(Bundle savedInstanceState) {
  76. super.onCreate(savedInstanceState);
  77. setContentView(R.layout.activity_main);
  78. listView = (ListView)findViewById(R.id.listView1);
  79. //設定Adapter到listview
  80. listView.setAdapter(new ImageTextAdapter(this));
  81. 監聽listview的改變
  82. listView.setOnItemClickListener(new OnItemClickListener() {
  83. @Override
  84. public void onItemClick(AdapterView<?> parent, View view,
  85. int position, long id) {
  86. //獲取LinearLayout上的TextView的文字訊息
  87. TextView textView = (TextView)((LinearLayout)view).getChildAt(1);
  88. //秀出TextView的文字訊息到Toast
  89. Toast.makeText(getApplicationContext(), textView.getText(),
  90. Toast.LENGTH_SHORT).show();        
  91. }
  92. });
  93. }
  94. }
複製代碼
完成圖片



 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-3 17:02 , Processed in 0.072613 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表