मुझे डी-पैड के साथ मेरा लिस्टव्यू काम मिला जो एक सूची आइटम के अंदर फोकस स्विच कर सकता है। इस तरह मैं इसे हल करता हूं। सबसे पहले, अपनी सूची दृश्य आइटम को ध्यान देने योग्य है।
नोट: यदि आप अपने कोड में बाद में गलत करने के लिए ItemsCanFocus सेट करने का प्रयास करते हैं, तो आपकी अपनी सूची आइटम अब और ध्यान केंद्रित नहीं कर सकते हैं यहां तक कि अपने सेट वापस सही करने के लिए फिर से करता है, तो मिल जाएगा, ताकि ऐसा नहीं करते हैं।
mDpadListView.setItemsCanFocus(true);
फिर आपको यह ट्रैक रखने के लिए एक फ़ील्ड चाहिए कि कौन सी सूची आइटम वर्तमान में चुना गया है। यहां मैंने व्यूहोल्डर को सूची में इटैम का टैग एडाप्टर में रखा है।
mDpadListView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if (view.getTag() != null) {
DpadListAdapter.ViewHolder holder = (ViewHolder) view.getTag();
if (holder.shortCut != null && holder.shortCut.isShown()) {
currentSelectView = view;
} else {
currentSelectView = null;
}
} else {
currentSelectView = null;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
तीसरा,() OnKeyDown ओवरराइड गतिविधि विधि में ऊपर और नीचे नियंत्रित करने के लिए, छोड़ दिया, डी-पैड के लिए सही कुंजी।
जब उपयोगकर्ता डी-पैड पर दायां बटन दबाता है, तो मैंने सूची दृश्य को Foucs() को साफ़ करने और फोकस प्राप्त करने के लिए ImageView को अंदर जाने दिया।
जब उपयोगकर्ता दबाए, नीचे या बाएं, सूची आइटम में ImageView इसे फोकस कर देगा और सूची दृश्य फिर से प्राप्त करें देखें।
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (currentSelectView != null) {
DpadListAdapter.ViewHolder holder =
(ViewHolder) currentSelectView.getTag();
mDpadListView.clearFocus();
holder.shortCut.setFocusable(true);
holder.shortCut.requestFocus();
return true;
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
if (currentSelectView != null) {
DpadListAdapter.ViewHolder holder =
(ViewHolder) currentSelectView.getTag();
if (holder.shortCut.hasFocus()) {
holder.shortCut.clearFocus();
holder.shortCut.setFocusable(false);
mDpadView.requestFocus();
return true;
}
}
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
हाय, मुझे मदद चाहिए, मैं जानना चाहता हूं कि अगर मैं डी-पैड के साथ एक आइटम का चयन करता हूं, तो पृष्ठभूमि रंग बदलता है। – wdyz
आपको अपने आइटम की पृष्ठभूमि छवि पर खींचने वाली एक राज्य सूची का उपयोग करने की आवश्यकता है, एंड्रॉइड दें: state_focused = "true" सामान्य स्थिति से एक अलग छवि। रेफरी: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList – henry74918
हाय, वर्तमान चयन क्या है – Andrain