<< Android〜拡張ウィジット  | main | Android Market 〜出品〜 >>

スポンサーサイト

一定期間更新がないため広告を表示しています


  • 2010.11.01 Monday
  • -
  • -
  • -
  • -
  • by スポンサードリンク

Android 〜Adapter〜

 Adapter その名の通りですが、AndroidではデータとViewを関連付けるために利用するようです。

public class DailyListAdapter extends ArrayAdapter<DailyDomain> {
private LayoutInflater mInflater;
private TextView _dailyYmd;
private TextView _dailySb;
private TextView _dailyMoney;
private Button _detailButton;
private Button _editButton;

private Activity _parent;

public DailyListAdapter(Context context, List<DailyDomain> objects,
Activity parent) {
super(context, 0, objects);
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this._parent = parent;
}

public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.dailylistview, null);
}
final DailyDomain item = this.getItem(position);
if (item != null) {
_dailyYmd = (TextView) convertView
.findViewById(R.id.daily_list_ymd);
_dailyYmd.setText(item.getDailyYmd());
_dailySb = (TextView) convertView.findViewById(R.id.daily_list_sb);
if (item.getDailySb().equals("0")) {
_dailySb.setText("支出");
} else if (item.getDailySb().equals("1")) {
_dailySb.setText("収入");
}
_dailyMoney = (TextView) convertView
.findViewById(R.id.daily_list_money);
_dailyMoney.setText("¥" + item.getDailyMoney());
_detailButton = (Button) convertView
.findViewById(R.id.daily_list_detail);
_detailButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 詳細ダイアログ表示
Intent intent = new Intent(_parent, DailyDetail.class);

// メモ表示
intent.putExtra(KakeiboConst.DAILY_DETAIL_ACTIVITY_PARAM,
item.getDailyMemo());

// 詳細ダイアログを表示
_parent.startActivity(intent);

}
});

_editButton = (Button) convertView
.findViewById(R.id.daily_list_edit);
_editButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

// 編集モードで日々入力Activityを表示
Intent intent = new Intent(_parent, DailyInput.class);

// rowidを設定(押されたボタンを判定する方法は?)
intent.putExtra(KakeiboConst.DAILY_INPUT_ACTIVITY_PARAM_1,
item.getRowid());

intent.putExtra(KakeiboConst.DAILY_INPUT_ACTIVITY_PARAM_2,
"1");

// 日々入力Activityを編集モードにて表示
_parent.startActivity(intent);

}
});
}
return convertView;
}

/**
* ListViewに表示するデータを取得する
* @return
*/
public static DailyListAdapter createListViewData(String ymd, Activity activity) {

DailyHelper helper = new DailyHelper(activity);
SQLiteDatabase db = helper.getWritableDatabase();

DailyDao dao = new DailyDao(db);

List<DailyDomain> dailyList = dao.findWhereDailyYMD(ymd);
DailyListAdapter adapter = new DailyListAdapter(activity, dailyList,
activity);

helper.close();

return adapter;
}
}

ちょっと、ソースが荒いですね。(すみません)

で、layoutです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" 
android:layout_height="fill_parent"
android:orientation="horizontal"
>
<ScrollView
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:scrollbars="horizontal"
>
<LinearLayout
android:layout_width="wrap_content" 
android:layout_height="fill_parent"
android:orientation="horizontal"
>
<TextView android:layout_width="80dip"
android:layout_height="wrap_content"
android:id="@+id/daily_list_ymd">
></TextView>
<TextView android:layout_width="40dip"
android:layout_height="wrap_content"
android:id="@+id/daily_list_sb">
></TextView>
<TextView android:layout_width="120dip"
android:layout_height="wrap_content"
android:id="@+id/daily_list_money">
></TextView>
<Button android:layout_width="40dip"
android:layout_height="40dip"
android:id="@+id/daily_list_detail"
android:text="@string/daily_list_detail"
></Button>
<Button android:layout_width="40dip"
android:layout_height="40dip"
android:id="@+id/daily_list_edit"
android:text="@string/daily_list_edit"
></Button>
</LinearLayout>
</ScrollView>
</LinearLayout>

で、このAdapterをActivityで利用する場合は、以下のようにListActivityを継承させて、setListAdapterにAdapterクラスを渡してあげれば、簡単に表示することが可能になります。


public class DailyListActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.kakeibolist);

// インテントより検索条件取得
Bundle bundle = this.getIntent().getExtras();

this.setListAdapter(DailyListAdapter.createListViewData(bundle
.getString(KakeiboConst.DAILY_LIST_ACTIVITY_PARAM), this));

}
}


スポンサーサイト


  • 2010.11.01 Monday
  • -
  • 23:20
  • -
  • -
  • -
  • by スポンサードリンク

コメント
コメントする









この記事のトラックバックURL
トラックバック
関連会社
株式会社ツクル
誠意と創意で技術を社会に活かすIT企業
          
          
時計
calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
Amazon
selected entries
categories
archives
recent comment
recommend
links
profile
search this site.
sponsored links
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
2008JUGEMキャラコングランプリ
キャラクターデザイン:磯崎洋助/「おしゃれひつじ」