iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0

現在受限於螢幕大小的關係,要瀏覽多筆資料時通常無法一次顯示,所以會需要以選單列表等方式顯示,這次目標就是做出一個ListView列表。

XML

先於XML新增出一個ListView元件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

JAVA程式

接著來到程式設計的部分,先將listView元件綁定ID,在ArrayList給予資料後與listView結合就完成了

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> adapter;
    private ArrayList<String> arrayList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);

        // 綁定元件
        listView = (ListView) findViewById(R.id.listview);
        //放資料
        for(int i = 0; i < 20; i++) {
            arrayList.add("第" + i + "個");
        }
        //設定adapter
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
        //將adapter給listview
        listView.setAdapter(adapter);
    }
}

成果

https://ithelp.ithome.com.tw/upload/images/20200831/20129417OCAg9hlNER.png

點擊事件

加上OnItemClickListener監聽讓我們目前有沒有被點擊,並且透過position來得知是哪一行被點選,然後做出相對應的事件

// 設置listView監聽器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        Toast.makeText(MainActivity.this,arrayList.get(position), Toast.LENGTH_SHORT).show();
    }
});

成果

點擊之後會在下方顯示第幾個被點擊
https://ithelp.ithome.com.tw/upload/images/20200831/20129417tNFkSonkob.png


上一篇
[Day08] Dialog訊息顯示
下一篇
[Day10] RecyclerView元件(1)
系列文
Android 從零開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言