Help us understand the problem. What is going on with this article?

adapterについて

More than 3 years have passed since last update.

Adapterとは

android studioでlistViewを使う際にはadapterを使わなければなりません。
adapterのはdeveloperでは

Adapter object acts as a bridge between an AdapterView and the underlying data for that view.

つまりAdapterViewなどのViewとデータの橋渡しをしています。

ArrayAdapter

http://qiita.com/nimani76/items/032d0d6d01f7bfd6a5e4
ここで使ったadapterはArrayAdapterというもので

val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1)

このように使っています。
thisはContext情報を渡しています。
Conrextとはアプリケーション全体の状態の情報(かな?)のことでその情報を渡しています。
android.R.layout.simple_list_item_1とはandroidSDKに標準で準備されているレイアウトファイルのIDをあらわすもの。
この二つのコンストラクタ以外にもandroid.R.layout.simple_list_item_1のうしろにlistのデータを渡すこともできます。

adapterの種類

adapterはArrayadapter以外にもCursorAdapter,SimpleAdapter,BaseAdapterがあります。

SimpleAdapter

SimpleAdapterはMLファイルで定義された複数のビューを表示するときに使用します。
コードはSimpleAdapter(this, listData, R.layout.list,arrayOf("no", "name"), intArrayOf(R.id.no, R.id.name))
thisはContext情報を渡すもの。
listDataはmapのlistでデータを表示するコンストラクト。
R.layout.listはlistviewに表示するウィジェットの定義されているID。arrayOf("no", "name")は表示するデータのmapのキー。
intArrayOf(R.id.no, R.id.name)はlistviewに表示するウィジェットが定義するresourcesのなかのウィジェットのID。

BaseAdapter

BaseAdapterはBaseAdapterを継承することで独自のadapterを作る場合に使用します
例として

origadapter.kt
import android.view.ViewGroup
import android.view.LayoutInflater
import android.widget.ArrayAdapter
import android.view.View
import com.example.nimani.listas2.R

class origadapter(context: Context, objects: List<HashMap<String, String>>) : BaseAdapter<HashMap<String, String>>(context, 0, objects) {
    private val mInflater: LayoutInflater
    private var mTitle: TextView? = null
    private var mDesc: TextView? = null

    init {
        mInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    }

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        var convertView = convertView
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list, null)
        }

        val item = this.getItem(position)
        if (item != null) {
            mTitle = convertView!!.findViewById(R.id.title)
            mTitle!!.text = item["title"]

            mDesc = convertView!!.findViewById(R.id.desc)
            mDesc!!.text = item["desc"]
        }
        return convertView!!
    }
}

のように継承して使用します。

CursorAdapter

CursorAdapterとはCursorクラスでアクセスする場合に使います。
今回は省略

参照

MitoRoid
http://mitoroid.com/category/android/android_listview1.php

Android開発でList Viewを使おう!
http://qiita.com/Tsumugi/items/47f31bb7351979a45653

nimani76
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away