前言
ListView肯定是開發Android常用元件之一,它能把數據用清單方式顯示出來,而ListView必須利用Adapter將資料載入,Adapter是負責管理ListView每一列的資料與畫面,然而Adapter的用法有很多種,趁著這次開發APP簡單做一個整理分享給大家。
- ArrayAdapter (此篇) – ListView 簡易用法
- SimpleCursorAdapter
- SimpleAdapter – ListView 進階用法 -,簡易客製化ListView Item樣式
- BaseAdapter – ListView 進階用法,完整客製化ListView Item樣式
1.ArrayAdapter
ArrayAdapter是最基本的方法,原則上只在練習ListView時候才會用到它。ArrayAdapter原理非常簡單就是宣告一個陣列把要值塞進去,接著ListView就會依照順序顯示出來,因為用此方法無法讓ListView的樣式做太大的變更,因此真正開發APP時不太可能會ArrayAdapter,以下簡單範例就足夠瞭解用法了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listview = (ListView) findViewById(R.id.listview); //ListView 要顯示的內容 String[] str = {"新北市","台北市","台中市","台南市","高雄市"}; //android.R.layout.simple_list_item_1 為內建樣式,還有其他樣式可自行研究 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str); listview.setAdapter(adapter); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.user.listview_demo.MainActivity" android:orientation="vertical"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:id="@+id/listview" /> </LinearLayout> |
2.點擊功能 OnItemClickListener
通常都會搭配OnItemClickListener來使用,讓使用者點擊ListView的Item時會有一些回饋,例如跳出訊息、切換Activity..等等,但這邊範例只會提供最簡單的彈出訊息,如果想要更複雜的用法,請參考進階篇(未定)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //ListView 要顯示的內容 改到全域變數 public String[] str = {"新北市","台北市","台中市","台南市","高雄市"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listview = (ListView) findViewById(R.id.listview); //android.R.layout.simple_list_item_1 為內建樣式,還有其他樣式可自行研究 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str); listview.setAdapter(adapter); listview.setOnItemClickListener(onClickListView); //指定事件 Method } /*** * 點擊ListView事件Method */ private AdapterView.OnItemClickListener onClickListView = new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Toast 快顯功能 第三個參數 Toast.LENGTH_SHORT 2秒 LENGTH_LONG 5秒 Toast.makeText(MainActivity.this,"點選第 "+(position +1) +" 個 \n內容:"+str[position], Toast.LENGTH_SHORT).show(); } }; } |