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)