諸君早安(゚∀゚)
又到了新年app小組寫教學文的時間囉
今天呢,我們要練習的是"ListView"跟"AlertDialog"
這個要怎麼寫?絕對難不倒你
正文開始
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.gavin.listview.MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView" />
</LinearLayout>
</RelativeLayout>
這是我們今天要用到的app它的xml部分
由於只是放ListView而已,所以就算不複製這段上去也不會花太多時間
那我們就廢話不多說,趕緊進主題。
ListView listView;
ArrayAdapter arrayAdapter;
//Adapter有適配器、連接器之稱
String[] str = {"HI!我是第一格","HI!我是第二格","HI!我是第三格","嗨。我是鮑伯。"};
這裡是宣告的部分,
String[] str裡面的內容可以隨便放,基本上不要違反輸入的規則就不會在這邊出錯
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,str);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(onClickListView);
}
我們今天用的xml就只有activity_main一個而已,所以理所當然的setContentView部分就是填入(R.layout.activity_main)。
ArrayAdapter那段後面有三個參數,第二個參數"R.layout.simple_item_1"是在描述說它在ListView的表現狀態(這樣講好像有點奇怪?)
後面的阿拉伯數字如果是"1",那它一個item就只會有一行文字
如果後面的阿拉伯數字是"2",那它一個item可以有兩行文字(上方的文字會比較小)
大家如果有需要可以google看看item_2的用法。
至於ArrayAdapter的第三個參數str,當然就是要放進去item裡面的string囉
寫完之後請務必要寫上"listView.setAdapter(arrayAdapter)",否則ListView還是會是空白的。
public AdapterView.OnItemClickListener onClickListView = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AlertDialog.Builder AD = new AlertDialog.Builder(MainActivity.this);
AD.setTitle("這格的內容是");
AD.setMessage(str[position]);
AD.setPositiveButton("好喔", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AD.show();
}
};
想必剛才大家一定還有注意到,onCreate(…)裡面還有一段"listView.setOnItemClickListener(onClickListView);"
沒錯,這裡的code就是寫給listView裡面每個item的監聽器(onCLickListener)。
這裡呢我們讓它item被按下去以後會彈出"AlertDialog"的視窗。
AlertDialog你可以把它想成遊戲裡面的那種詢問視窗,
就像是你快沒血的時候,按了道具攔的「回復藥」,它還會跳出一個「你是否要使用?」的惱人視窗。
AlertDialog差不多就是那種存在,不過應該是不至於會惱人就是了…吧?
另外,要提醒大家一個很重要的事情:
一定要寫(AlertDialog.Builder的名字).show();
一定要寫(AlertDialog.Builder的名字).show();
一定要寫(AlertDialog.Builder的名字).show();
很重要,真的很重要所以又Ctrl+V兩次。
有一次我在debug的時候就是忘記這點,搞了半天才發現…囧rz
沒有這行.show()的話,你的item無論按了幾百次都是沒用的!
少了它,AlertDialog永遠都不會出現啊!
後記
嗯…老實說這篇是我第一個寫的教學文,有點抓不太到節奏Orz
寫起來就很亂,還請各位見諒。
內容有不少都是參考網路上各處的資料所學來的,
以及外加我個人的奇妙見解(?),如果其中有所錯誤,還請各方學者不吝指教。
以上,在這裡再次向各位拜個早年。