2012-10-05 43 views
11

मेरे आवेदन में मैं टैबलेट पर जीमेल ऐप के समान कुछ करना चाहता हूं, बाईं ओर वस्तुओं की सूची और दाईं ओर एक टुकड़ा रखने के अधिकार में उस आइटम की सामग्री, जैसे जीमेल ऐप के लिए यह सामग्री चयन के बाद डाउनलोड की जा रही है। एक आइटम पर क्लिक करने के बाद, मैं इसे तब तक हाइलाइट करना चाहता हूं जब तक कि मैं चयन को बदल नहीं लेता। मैं एक बिंदु पर पहुंच गया जहां यह काम करता है, लेकिन केवल अगर मैं एक ही आइटम पर दो बार क्लिक करता हूं, तो पहले मैं क्लिक करता हूं, चयन कार्य करता है और फिर आइटम वापस 'डिफ़ॉल्ट' स्थिति पर जाता है और यदि मैं उस पर फिर से क्लिक करता हूं, तो चयनकर्ता (के लिए चयनित राज्य) दृश्यमान है।एंड्रॉइड: सेट सूची दृश्य आइटम को "चयनित" (हाइलाइट किया गया)

यह वही है मैं अब तक है:

1) चयनकर्ता (listitem_background.xml)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/solid_white" android:state_pressed="false" android:state_selected="false"/> 
    <item android:drawable="@drawable/listitem_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/listitem_focused" android:state_selected="true"/> 

</selector> 

2) सूची आइटम के शीर्ष रेखीय लेआउट के लिए:

android:background="@drawable/listitem_background" 

(मैंने इसे सूचियों के रूप में सेट करने का प्रयास किया, साथ ही)

3) यह सूची दृश्य है:

<ListView 
    android:id="@+id/my_list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:choiceMode="singleChoice" 
    android:dividerHeight="1dp" 
    android:drawSelectorOnTop="true" 
    android:fadeScrollbars="true" 
    android:fastScrollEnabled="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:scrollbarFadeDuration="100" 
    android:scrollbars="vertical" /> 

4) कोड भाग में मैं इस के साथ खेलने की कोशिश की:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    view.setSelected(true); 
    ... 
} 

[संपादित करें] वास्तव में मैंने देखा है कि चयन सही में टुकड़ा के लिए प्रतिबद्ध के बाद खो दिया है स्क्रीन के किनारे। मैं टुकड़ा यह एक आकर्षण की तरह काम करता प्रतिबद्ध नहीं है ... मुझे लगता है कि मैं चयनकर्ता में कुछ इस तरह की जरूरत है:

<item android:drawable="@drawable/listitem_focused" android:state_activated="true" android:state_focused="false"/> 

लेकिन स्पष्ट रूप से यह नहीं ...

उत्तर

45

ठीक है, अंत में मिला मेरा जवाब।

विचार,

android:choiceMode="singleChoice" 
एक्सएमएल में

चयनकर्ता में state_activated और

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE) 
कोड में

, या उपयोग करने के लिए पाठ्यक्रम

की यह है कि कैसे चयनकर्ता चाहिए इस तरह दिखें:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/solid_white" android:state_activated="false"/> 
    <item android:drawable="@drawable/solid_white" android:state_activated="false" android:state_pressed="false"/> 
    <item android:drawable="@drawable/listitem_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/listitem_focused" android:state_activated="true"/> 

</selector> 

यह कैसे सूची आइटम लेआउट होना चाहिए:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/listitem_background" 
    android:orientation="vertical" > 
... 
<LinearLayout/> 
+0

धन्यवाद मदद कर सकता है। यह मेरे लिए काम किया :) –

+0

एपीआई 8 –

4

मैं एक ही मुद्दे का सामना करना पड़ा और उसके बाद मैं बस अपना आइटम दृश्य एक्सएमएल में एक सरल रेखा की जरूरत है।

android:background="?android:attr/activatedBackgroundIndicator"

This post

+0

के लिए काम नहीं करता केवल एपीआई स्तर के लिए> = 14 – johntheripp3r