iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
自我挑戰組

向Android APP開發說Hello系列 第 24

Day 24. Android的Memory管理與View Recycling (Part.2)

  • 分享至 

  • xImage
  •  

今天來實作VIEW RECYCLING(視圖回收),我們需要ListView與Adapter的合作。

建立Adapter

在MainActivty.java中,留下前次建立的ArrayList,並建立Adapter。

  • 建立ArrayAdapter物件,需要三個參數(context, resource, object):
    • context:this,代表MainActivity.java本身。
    • resource:Layout檔案,這邊輸入的android.R.layout.simple_list_item_1實際上是Android預定義的xml文件。
    • object: 我們建的ArrayList(tortoises)。
  • 使用public void setAdapter (ListAdapter adapter)方法,該方法所需要的參數是個ListAdapter類別的adapter,但我們給他的是ArrayAdapter,這是因為ListAdapter是個interface,需要被實作,而BaseAdapter實作了部分的ListAdapter,最後ArrayAdapter實作了所有方法,也就是我們App所使用的具體的類別。
    https://ithelp.ithome.com.tw/upload/images/20181108/20107569lj2mW9vNcb.jpg

程式碼如下:

package com.example.android.eventlistener_practice;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // create ArrayList
        ArrayList<String> tortoises = new ArrayList<String>();
        tortoises.add("Cyclemys trifasciata");
        tortoises.add("Chinemys reevesiis");
        tortoises.add("Mauremys mutica");
        tortoises.add("Ocadia sinensis");
        tortoises.add("Platysternon megacephalum");
        tortoises.add("Trachemys scripta elegans");
        tortoises.add("Chelodina siebenrocki");
        tortoises.add( "Carettochelys insculpta");
        tortoises.add("Chelydra serpentina");
        tortoises.add("Chrysemys picta");

       // 建立ArrayAdapter
        ArrayAdapter itemsAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, tortoises);
        ListView listView = findViewById(R.id.list);
        listView.setAdapter(itemsAdapter);
    }
}

建立ListView

在xml中,建立一個ListView,並給他id為list

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

在手機上查看

https://ithelp.ithome.com.tw/upload/images/20181108/201075692oNb4y0Y5k.png

小結

因此Adapter是data model,負責資料來源,ListView是UI,負責顯示並偵測使用者的手勢以便列出螢幕上可見的views。也就是說Adapter也可以搭配其他的View,像是GridView、Spinner等。


上一篇
Day 23. Android的Memory管理與View Recycling (Part.1)
下一篇
Day 25. 定義自己的Layout應用於ArrayAdapter (Part.1)
系列文
向Android APP開發說Hello30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言