Android Studio : ListView Using BaseAdapter(使用BaseAdapter的ListView範例)
ListView是'很常用的功能,E-Mail信件、選單等都是利用此功能,使用最基本的BaseAdapter做一個簡單的範例。
相關資訊圖片:
![[程式] Android Studio : ListView Using BaseAdapter ListView Using BaseAdapter View1 (activity_main.xml)畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7JgPcNUerHVek-Fy0jUUQPNV4ynLtx_r5O7Q-_HV4bR0_r-bO3njhAdqucTfqko6YtVrNOm8bA8Hxa3SBBUYxAsDQp4KWoQK5RXWDgcnKKbTvHz64JwzMgqGgXYOW_g6WZcIBTTPcxR8H/s640/ListViewUsingBaseAdapter_01.jpg) |
ListView Using BaseAdapter View1 (activity_main.xml)畫面 |
![[程式] Android Studio : ListView Using BaseAdapter ListView Using BaseAdapter View2 (list_item.xml)畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyXWeUIXIgrKsZWPo7lkBW7BP8sBLAXmF2MuZ4RQIH9hTAhsKrqAnxmQOivtANQ3lkRNbouh8e8TjGiuPNA0rTTcQBygYyiPBR-IZzUEZhpcWsxHcVDM3l8KoPLzJ1aRLN_Ducu1TnKa8M/s640/ListViewUsingBaseAdapter_02.jpg) |
ListView Using BaseAdapter View2 (list_item.xml)畫面 |
![[程式] Android Studio : ListView Using BaseAdapter 初始畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPE1aNfXQ4gJVNWG4hGdH63DT-xAu7jPpny6JpOB9kSV6SblXTT-vnw_imEa-vXYLueBeP3W2Su8cWPYdn3DsHecgUWeHI1IOhcnf74O50ul5mD0cNLMC1PiIxZT-VIJMBSXEG5wybwJoS/s400/ListViewUsingBaseAdapter_03.jpg) |
初始畫面 |
![[程式] Android Studio : ListView Using BaseAdapter 點擊畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyfBtPfBJ1bjnmEE5HRafaxTupi0k8P0IH8r6MKRen2TIDIh1vsqioMTB1lWkU7a0bZWNAd3R44EMMoxSu7YJ01UrjxrVIyXtT9wzdPhAvopxnmq2gtaoK5h9dwhC6ZlayHvl_vqnY9HwK/s400/ListViewUsingBaseAdapter_04.jpg) |
點擊畫面 |
Source Code:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
list_item.xml
<?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">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="24dp"
android:text="TextView" />
</LinearLayout>
MainActivity.java
package tw.idv.wenyen.listviewusingbaseadapter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
ListView listView;
static String[] lessons = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
listView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return lessons.length;
}
@Override
public Object getItem(int position) {
return lessons[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.list_item, null);
TextView textView = view.findViewById(R.id.textView);
textView.setText(lessons[position]);
return view;
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
// Toast.makeText(MainActivity.this, lessons[position], Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, listView.getAdapter().getItem(position).toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
實作心得:
使用BaseAdapter主要是因為比需實作的函數只有4個,了解最基礎的函數後,再慢慢往上增加相關的函數,會是比較好的方式,尤其是將來要客製化時,才能夠靈活的應用,就像在範例的Toast,可以直接取得點選位置,也可以呼叫Adapter的函數,呈現出相同效果。
參考資料:
0 意見:
張貼留言