Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android ListView ArrayAdapter 的簡單使用,androidarrayadapter

Android ListView ArrayAdapter 的簡單使用,androidarrayadapter

編輯:關於android開發

Android ListView ArrayAdapter 的簡單使用,androidarrayadapter


前面寫了3篇關於android的文章,其中的演示程序都寫在了一個工程中,當時為了方便測試就在啟動頁MainActivity中放了3個按鈕,點擊不同的按鈕進入不同的示例程序頁面,MainActivity的界面如下截圖:

按照上面的設計,每寫一個演示程序就需要在MainActivity中新增一個按鈕並為其寫點擊事件,感覺這樣有點麻煩,於是想改進一下,順便用一下ListView和ArrayAdapter。經過改進後的啟動頁如下圖:

新建了一個MainActivity2,用一個ListView來展現演示程序列表,點擊相應列表項就跳轉到相應的演示頁面,功能和之前的MainActivity一樣,但之後就不需要不斷添加按鈕及其點擊事件了,只需要為每個演示頁面添加一行代碼:catalogs.add(new Catalog("演示的名稱", 要跳轉到的Activity.class)),這樣就簡潔多了,具體代碼如下。

MainActivity2布局文件如下:

<?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="vertical" >

    <ListView
        android:id="@+id/lvCatalog"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>

MainActivity2 Java代碼如下:

package chengyujia.demo.aty;

import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import chengyujia.demo.R;
import chengyujia.demo.model.Catalog;

public class MainActivity2 extends BaseActivity {

    private ListView lvCatalog;
    private List<Catalog> catalogs;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        lvCatalog = (ListView) findViewById(R.id.lvCatalog);
        init();
    }

    private void init() {
        catalogs = new ArrayList<Catalog>();
        // 為主頁目錄添加條目,以後每多寫一個例子,在這裡添加一個條目就可以了。
        // 不像以前MainActivity中每多寫一個例子,需要添加一個按鈕,還要寫相應的點擊事件。
        catalogs.add(new Catalog("屏幕方向", OrientationActivity.class));
        catalogs.add(new Catalog("打電話", CallActivity.class));
        catalogs.add(new Catalog("版本信息", VersionActivity.class));

        // 這裡ListView的適配器選用ArrayAdapter,ListView中每一項的布局選用系統的simple_list_item_1。
        ArrayAdapter<Catalog> adapter = new ArrayAdapter<Catalog>(this, android.R.layout.simple_list_item_1, catalogs);
        lvCatalog.setAdapter(adapter);

        // 通過一個實現OnItemClickListener接口的匿名類的onItemClick方法來處理ListView中每一項的點擊事件。
        lvCatalog.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                startActivity(new Intent(MainActivity2.this, catalogs.get(position).cls));
            }
        });
    }
}

在這裡還使用了一個自定義的Model類Catalog,用來表示列表中的每一項綁定的數據,其代碼如下:

package chengyujia.demo.model;

import android.app.Activity;

//主頁目錄列表項
public class Catalog {

    // 條目名稱
    public String name;
    // 點擊條目要跳轉到的目標Activity的類型
    public Class<? extends Activity> cls;

    // 寫個帶參數的構造方法,方便賦值使用。
    public Catalog(String name, Class<? extends Activity> cls) {
        this.name = name;
        this.cls = cls;
    }

    // ListView使用ArrayAdapter<T>時每個列表項顯示的內容就是T的toString方法返回的值,
    // 如果這裡不重寫則會調用父類Object的toString方法。
    @Override
    public String toString() {
        return name;
    }
}

Catalog類中注意的是一定要重寫toString方法,不然的話ListView的每一項顯示的是“對象的類名+@+hashCode”的組合字符串。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved