サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > AndroidのListViewで未選択の時に省略記号を表示するサンプル@tryListView01
Google Play AAKAKAxSOFTへ

AndroidのListViewで未選択の時に省略記号を表示するサンプル@tryListView01

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryListView01の実行イメージtryListView01の実行イメージ

ListViewでアイテムが選択されてない場合は「内容のテキスト…」みたいな省略表示にする。
選択されたものだけ全部表示するようにする。
問題があって、このまま使うと同じ文章を使った場合は削除とかおかしくなる。

package trial.sample.trylistview01;

import java.util.Vector;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

//////////////////////////////////////////////////////////////////
// ListViewの項目が選択されたらすべてを表示
// 選択されてない場合は「内容のテキスト...」みたいな表示にする。
// 同じ文章がないなら問題ないが、同じ文章がある場合おかしなことになる。
//////////////////////////////////////////////////////////////////
public class TryListView01Activity extends Activity implements OnItemClickListener {
	
	// リストビューに関連付けるアダプタ
	private ArrayAdapter<String> mAdapter;
	// リストビュー本体
	private ListView mListView;
	private Vector<String> mListViewText;
	
	// 前に選択されていたもの
	private View mOldSelectedView;
	private int mOldSelectedPosition;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        
        //
        this.mOldSelectedView = null;
        this.mOldSelectedPosition = -1;
        //
        this.mListViewText = new Vector<String>();
        this.mListViewText.add("何か長い文章を考えなきゃいけないんだけど、そうそういい文章がうかぶわけないよねー。");
        this.mListViewText.add("作家さんってすごいと思うんだ。");
        this.mListViewText.add("今週は楽しみにしてた新しいやつの発売だ!");
        this.mListViewText.add("android 4.0って使いやすいけど、開発はやっぱ2.2くらいのやつからやらないとだめなんだよね。");
        this.mListViewText.add("いっそのこと2.3くらいまで上げてやってしまおうか?");

        // アダプターを作る
        this.mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        
        // アダプタにメッセージを登録する
        for (int i = 0, len = this.mListViewText.size(); i < len; i++) {
        	this.mAdapter.add(this.makeTitleText(this.mListViewText.get(i)));
        }
        
        
        // リストビューを取り出す
        this.mListView = (ListView)this.findViewById(R.id.listView1);
        this.mListView.setAdapter(this.mAdapter);
        this.mListView.setOnItemClickListener(this);
        this.mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        
    }
    
    /** 適当な長さの文字列を作る */
    private String makeTitleText(String base) {
    	
    	// 適当な長さなかったらそのまま
    	if (base.length() < 16)
    		return base;
    	
    	String tmp = base.substring(0, 16);
    	return tmp + "...";
    }

    /** リストビューがクリックされたときに呼ばれる */
	public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {

		Log.v("onItemClick", "position: " + position + " id: " + id);
		// 何か選択されている
		if (this.mOldSelectedView != null) {
			// 背景色をもとに戻す
			this.mOldSelectedView.setBackgroundColor(Color.rgb(0, 0, 0));
			
			// 前に選択されていた場所の文字列をもとに戻す
			//
			String msgSrc = this.mListViewText.get(this.mOldSelectedPosition);
			String object = this.mAdapter.getItem(this.mOldSelectedPosition);
			this.mAdapter.remove(object);
			this.mAdapter.insert(this.makeTitleText(msgSrc), this.mOldSelectedPosition);
		}
		
		// 今選択されているもの
		this.mOldSelectedView = view;
		this.mOldSelectedView.setBackgroundColor(Color.rgb(255, 0, 0));
		this.mOldSelectedPosition = position;
		
		// 新しく全体の文字列をセットする
		String msgSrc = this.mListViewText.get(this.mOldSelectedPosition);
		String object = this.mAdapter.getItem(this.mOldSelectedPosition);
		this.mAdapter.remove(object);
		this.mAdapter.insert(msgSrc, this.mOldSelectedPosition);
	}
}
サンプルプロジェクトをダウンロード APKファイルをダウンロード

, , ,

ListView(アイテムの追加・選択・削除・クリア)のサンプル#tryListView00 AndroidのListView(ArrayAdapter)を拡張するサンプル@tryListView02

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>