AdapterView.setOnItemClickListener

AdapterView.setOnItemClickListenerで、アイテムがクリックされた時のリスナーをセットする。

AdapterView  |  Android Developers

MainActivity.javaで、

クリックされた位置positionをトースト表示。

起動時
起動時

起動時。
真ん中のitem2をクリックすると、

positionは1
positionは1

positionは1。

Sample/android/AdapterView/setOnItemClickListener/src/AdapterView at master · bg1bgst333/Sample · GitHub

ListFragment.setListShownNoAnimation

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を押すと、

アニメーションせずにパッと切り替わる
アニメーションせずにパッと切り替わる

アニメーションせずにパッと切り替わる。
って、静止画じゃわからんか・・・。

Sample/android/ListFragment/setListShownNoAnimation/src/ListFragment at master · bg1bgst333/Sample · GitHub

ListFragment.setListShown

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.setEmptyTextで、リストが空の時に表示するテキストをセットする。

ListFragment  |  Android Developers

CustomListFragment.javaで、

setEmptyTextで表示するテキストをセットしてから、mItemsのインスタンスであるArrayList<ListItem>自体は作り、アイテムは追加せず空にする。

このようになる
このようになる

このようになる。
非同期処理を前提に作られているので、アダプタをセットしないなどすると、プログレスリングが表示されっぱなしなど、使い方がややこしい。

Sample/android/ListFragment/setEmptyText/src/ListFragment at master · bg1bgst333/Sample · GitHub

ListFragment.setListAdapter

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

ListFragment

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