Posted at

adapterについて

More than 1 year has 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