Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/13-11f1e446

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

ListViewにラベルを表示する

listViewSample.png
こんな感じ

・レイアウトとかビューの属性とか弄れるので、表現の種類としては汎用性はあると思います。
・ラベルとコンテンツのレイアウトはxmlファイルで管理できないので課題です。
・ViewHolder普段使わないけど、FastWayらしいので使ってみました。
http://dl.google.com/googleio/2010/android-world-of-listview-android.pdf
・上のリンクでItem propertieのdisableでいける的な感じですが、よくわからなかったので無理矢理独自な感じです。勉強します。

ソースは続きを読むから

CategoryListActivity.java


public class CategoryListActivity extends Activity {

  /**
   * onCreate
   * @see android.app.Activity#onCreate(android.os.Bundle)
   */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // リストビューの作成
    ListView listView = new ListView(this);
    setContentView(listView);
    
    // アダプターの作成
    SampleAdapter adapter = new SampleAdapter(this);
    adapter.add(new BindData("野菜" , false));
    adapter.add(new BindData("トマト" , true));
    adapter.add(new BindData("サラダ" , true));
    adapter.add(new BindData("レタス" , true));
    
    adapter.add(new BindData("肉" , false));
    adapter.add(new BindData("牛肉" , true));
    adapter.add(new BindData("豚肉" , true));
    adapter.add(new BindData("鶏肉" , true));
    
    adapter.add(new BindData("麺" , false));
    adapter.add(new BindData("ラーメン" , true));
    adapter.add(new BindData("うどん" , true));
    adapter.add(new BindData("そば" , true));
    
    // アダプターのセット
    listView.setAdapter(adapter);
  }
  
  /**
   * ビューホルダー
   */

  private static class ViewHolder {
    TextView mTextView;
  }
  
  /**
   * アダプター
   */

  private class SampleAdapter extends ArrayAdapter{
    
    /** レイアウト */
    final static int LAYOUT = R.layout.simple_list;
    
    /** インフレーター */
    private LayoutInflater mInflater;
    
    /**
     * コンストラクタ
     * @param context  コンテキスト
     */

    public SampleAdapter(Context context) {
      super(context, LAYOUT);
      mInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    }
    
    /**
     *  getView
     * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup)
     */

    @Override
    public View getView(int position , View convertView , ViewGroup parent){
      ViewHolder holder;
      
      // ビュー確保
      if(convertView == null){
        convertView = mInflater.inflate(LAYOUT, null);
        holder = new ViewHolder();
        holder.mTextView = (TextView)convertView.findViewById(R.id.simple_list_Text);
        convertView.setTag(holder);
      }
      else{
        holder = (ViewHolder)convertView.getTag();
      }
      
      // データ確保
      BindData bindData = getItem(position);
      
      // 共通処理
      holder.mTextView.setText(bindData.mMessage);
      
      // コンテンツの処理
      if(bindData.mIsContent){
        holder.mTextView.setBackgroundColor(Color.BLACK);
      }

      // ラベルの処理
      else{
        holder.mTextView.setBackgroundColor(Color.DKGRAY);
      }
      return convertView;
    }
  }
  
  /**
   * データ
   */

  private class BindData{
    
    /** 表示させるメッセージ */
    private String mMessage;

    /** コンテンツか否か */
    private boolean mIsContent;
    
    /**
     * コンストラクタ
     * @param message    表示させるメッセージ
     * @param isContent    コンテンツか否か
     */

    public BindData(String message , boolean isContent){
      mMessage = message;
      mIsContent = isContent;
    }
    
  }
}


simple_list.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
<TextView
    android:id="@+id/simple_list_Text"
    android:textSize="30sp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
</TextView>
</LinearLayout>
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/13-11f1e446

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。