mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View arg1,
int position, long arg3) {
ImageView iv = (ImageView) arg1.findViewById(R.id.photo);
int right = iv.getRight();
if (mListPosX <= right) {
Contact contact = mAdapter.getItem(position).getContact();
Uri uri = ContactsContract.Contacts.getLookupUri(contact.getContactId(),
contact.getLookupKey());
ContactsContract.QuickContact.showQuickContact(mContext, iv , uri,
ContactsContract.QuickContact.MODE_SMALL, null);
mContactBadge = true;
} else {
Intent intent = new Intent(MainActivity.this,
ContactActivity.class);
intent.putExtra(ContactActivity.INTENT_CONTACT, mAdapter
.getItem(position).getContact().getContactId());
startActivity(intent);
}
}
});
mListView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mListPosX = (int) event.getX();
return false;
}
});
2011年7月18日月曜日
ListView の画像に ContactBadge を表示する
ListView に表示している画像がクリックされたら ContactBadge を表示させる。OnItemClickListener ではクリックされた位置がわからないので、OnTouchListener で一度受けて座標情報を保存し、OnItemClickListener でレンジをチェックして処理を分ける。以下の例では画像の表示エリアが左側なので、その右端で判定している。
2011年7月1日金曜日
DialogPreference で summary を設定
DialogPreference を継承したクラスで summary を起動時にセットするときに、そのコンストラクタで getPersistedValue しても設定が読めない。ちょっと探してみた限りは明確な答えが見つからなかったけど、onAttachedToActivity() で設定を読むようにしたらちゃんと読めた。
その他ハマってしまったのは、onDialogClosed で superクラス呼ばないと設定が保存されないこと。
@Override
protected void onAttachedToActivity() {
AppInfo info = getSetting(); // この中で getPersistedString() してる
if (info == null) {
setSummary(mContext.getString(R.string.no_pref));
} else {
setSummary(info.mLabel);
}
}
その他ハマってしまったのは、onDialogClosed で superクラス呼ばないと設定が保存されないこと。
登録:
コメント (Atom)