AdapterView.setOnItemClickListenerで、アイテムがクリックされた時のリスナーをセットする。
AdapterView | Android Developers
MainActivity.javaで、
クリックされた位置positionをトースト表示。
起動時。
真ん中のitem2をクリックすると、
positionは1。
AdapterView.setOnItemClickListenerで、アイテムがクリックされた時のリスナーをセットする。
AdapterView | Android Developers
MainActivity.javaで、
クリックされた位置positionをトースト表示。
起動時。
真ん中のitem2をクリックすると、
positionは1。
ListFragment.setListShownNoAnimationも、リスト表示・非表示切り替えだが、"切り替え時"のアニメーションが無い。
ListFragment | Android Developers
strings.xmlで、
Buttonを1つ追加。
activity_main.xmlで、
Buttonを配置。
CustomListFragment.javaで、
最初はリスト非表示にしておく。
MainActivity.javaで、
package com.bgstation0.android.sample.listfragment_; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.ListFragment; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { // メンバフィールド. ListFragment mCustomListFragment = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // savedInstanceStateのチェック. if (savedInstanceState == null){ // nullの時. // FragmentManager, fragmentTransactionの取得. FragmentManager fragmentManager = getFragmentManager(); // fragmentManagerの取得. FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // fragmentTransactionの取得. mCustomListFragment = new CustomListFragment(); // customListFragmentを生成. fragmentTransaction.add(R.id.framelayout1, mCustomListFragment); // mCustomListFragmentを追加. fragmentTransaction.commit(); // コミット. } // ボタンハンドラ Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mCustomListFragment.setListShown(true); // 表示. } }); } }
Buttonを押したら、表示。
起動時は、
プログレスリング。
Buttonを押すと、
フェードアニメーションでリストが表示される。
setListShownNoAnimationだと、
プログレスリングから、Buttonを押すと、
アニメーションせずにパッと切り替わる。
って、静止画じゃわからんか・・・。
ListFragment.setListShownで、リストの表示・非表示を切り替える。
ListFragment | Android Developers
CustomListFragment.javaで、
setListShownでfalseにすると、リスト非表示となるが、
ここでいうリスト非表示とはプログレスリング表示なのである。
本来なら、空でないリストをアダプタにセットすると、リスト表示されるが、setListShownでfalseにすると、プログレスリングのまま。
これもなんかややこしいというか、使いどころが微妙。
Sample/android/ListFragment/setListShown/src/ListFragment at master · bg1bgst333/Sample · GitHub
ListFragment.setEmptyTextで、リストが空の時に表示するテキストをセットする。
ListFragment | Android Developers
CustomListFragment.javaで、
setEmptyTextで表示するテキストをセットしてから、mItemsのインスタンスであるArrayList<ListItem>自体は作り、アイテムは追加せず空にする。
このようになる。
非同期処理を前提に作られているので、アダプタをセットしないなどすると、プログレスリングが表示されっぱなしなど、使い方がややこしい。
Sample/android/ListFragment/setEmptyText/src/ListFragment at master · bg1bgst333/Sample · GitHub
ListFragment.setListAdapterでアダプタをセットする。
ListFragment | Android Developers
こちらも、今回はCustomAdapterを作る。
list_item.xmlで、
nameとaddressのTextView。
ListItem.javaで、
nameとaddress。
CustomAdapter.javaで、
ArrayAdapter<ListItem>を継承し、コンストラクタでinflaterを取得し、getViewでconvertView生成。
CustomListFragment.javaで、
ListItemを一つずつmItemsに追加し、customAdapterを生成し、setListAdapterでセット。
こうなる。
Sample/android/ListFragment/setListAdapter/src/ListFragment at master · bg1bgst333/Sample · GitHub
ListViewの機能を持ったFragment、ListFragmentというものもある。
ListFragment | Android Developers
activity_main.xmlで、
FrameLayoutにFragmentを挿入していく。
CustomListFragment.javaで、
ListFragmentを継承。
どこで、アダプタをセットするかが肝だけど、onActivityCreatedあたりが無難。
それより後でも良さそうだけど、どうなんだろ。
MainActivity.javaで、
CustomListFragmentをR.id.framelayout1にadd。
こうなる。
Sample/android/ListFragment/ListFragment/src/ListFragment at master · bg1bgst333/Sample · GitHub