編輯:關於android開發
前面寫了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”的組合字符串。
Android 高級面試題及答案,android試題及答案
Android 高級面試題及答案,android試題及答案一 性能優化 1.如何對 Android 應用進行性能分析 android 性能主要之響應速度 和UI刷新速度。
關於安卓APP的啟動界面,安卓APP啟動界面
關於安卓APP的啟動界面,安卓APP啟動界面剛學安卓App開發的朋友們,可能會遇到一個問題,就是人家的App剛進入會有一個頁面出現一會兒後消失, 這個頁面
解決Android SDK Manager下載太慢問題
解決Android SDK Manager下載太慢問題 在極客頭條上看到的方法,Mark一下,以後可能經常用到。 1、打開android sdk manager 2、打開
Android 博客園客戶端 (五) 查看評論、搜索博主,android查看評論
Android 博客園客戶端 (五) 查看評論、搜索博主,android查看評論項目地址:https://github.com/ZhangTingkuo/AndroidC