16

में मैं इस तरह मेरे लेआउट में एक ListView का उपयोग करें:अचयनित चयनित आइटम ListView

<ListView android:id="@+id/list" 
       android:layout_width="fill_parent" 
       android:layout_gravity="center" 
       android:layout_height="match_parent" 
       android:layout_weight="0.7" 
       android:layout_marginTop="5dp" 
       android:orientation="vertical" 
       android:layout_centerInParent="true" 
       android:divider="@color/dark_grey" 
       android:drawSelectorOnTop="false" 
       android:focusable="true" 
       android:layout_marginBottom="55dp" 
       android:cacheColorHint="#00000000" 
       android:listSelector="@color/light_grey" 
       android:dividerHeight="1px" /> 

चयनकर्ता अच्छा काम करता है, लेकिन मैं चयनकर्ता कैसे निष्क्रिय कर सकते हैं?

मैंने कोशिश की:

listView.clearChoices(); 
listView.setSelected(); 
listView.setSelector(); 
... 

और कुछ और बातें लेकिन कुछ भी काम करता है। कोई विचार है कि मैं अपने चुने हुए आइटम को सामान्य में कैसे बदल सकता हूं? वह जटिल नहीं हो सकता है, है ना?

संपादित करें: मुझे प्रोग्रामेटिकल समाधान की आवश्यकता है!

धन्यवाद!

+1

मई आप इस बग से पीड़ित हैं http://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode –

+0

हाँ, जब 'clearLayout()' को साफ़ करने के बाद 'कॉल'() 'यह काम करता है। आप एक anwer पोस्ट करते हैं तो मैं स्वीकार करेंगे यह – Ron

उत्तर

32

requestLayout() पर कॉल करें ListView पर। यह काम करेगा।

+8

()' –

+0

मेरे लिए listviewObject.clearChoices() adapterObject.notifyDataSetChanged के बाद() – GFPF

+0

'adapter.notifyDataSetInvalidated()' के लिए काम करता है के साथ काम किया ** ExpandableListView ** – samosaris

0

अपने XML में जहां ListView उपयोग की घोषणा:

<ListView android:id="@+id/my_list" android:listSelector="#00000000" /> 
+0

हाँ, लेकिन मैं अपने चयनकर्ता सूची आइटम ... पर अगले क्लिक के लिए फिर से काम करना चाहते हैं अगर मैं इस तो चयनकर्ता, अदृश्य है ना? – Ron

+0

ओह शायद [इस] (http://stackoverflow.com/questions/2038040/android-listview-selector-color) मेरे लिए यह 'clearChoices के बाद' adapter.notifyDataSetChanged() 'के साथ काम किया मदद कर सकते हैं .. –

0

आप क्लिक करने के बाद एक चयनकर्ता सेट कर सकते हैं:

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/transparent_white" android:state_focused="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="false" android:state_pressed="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="false"/> 

और @ drawable/transparent_white # 00ffffff है

0

कोशिश इस

इस

YourSelector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:state_focused="true" 
     android:drawable="@drawable/item_disabled" /> 
    <item android:state_pressed="true" 
     android:drawable="@drawable/item_pressed" /> 
    <item android:state_focused="true" 
     android:drawable="@drawable/item_focused" /> 
</selector> 

जांच के लिए इस लिंक

here

की तरह अपने खुद के चयनकर्ता xml फ़ाइल बनाएं clearChoices() के बाद ListView पर 0
11

रूप @Muerte ऊपर उल्लेख किया है, कर रही है मेरे लिए काम किया है:

myListView.clearChoices(); 
myAdapter.notifyDataSetChanged(); 

कि यह की तरह लगता है पूरे लेआउट redrawing से बेहतर होगा। समाधान वास्तव में मेरे लिए काम किया

listView.setAdapter(myAdapter); 
+0

मेरे लिए adapterObject.notifyDataSetChanged() – GFPF

3

मेरे लिए यह साथ काम किया। मेरी सूचीदृश्य खोजी गई वस्तुओं को सूचीबद्ध करने के लिए है और खोज को फिर से करने का प्रावधान है। परिणाम प्राप्त करने पर मैंने निम्नलिखित कोड स्निपेट जोड़ा और यह काम किया :)

myAdapter.setSelectedIndex (-1);

+1

के बाद listviewObject.clearChoices साथ() काम किया धन्यवाद । इतने सारे अलग-अलग तरीके से प्रयास करने के बाद, आखिर में मेरे लिए काम किया। – rastik

+0

यह मेरे लिए काम किया। अन्य सभी सुझाव काम नहीं करते थे। मुझे यकीन है कि नहीं कर रहा हूँ क्यों उन्होंने ऐसा नहीं किया, लेकिन शायद इसकी वजह से मैं myAdapter.notifyDataSetChanged() onItemClick में फोन कर रहा हूँ() हैंडलर। – zappullae

0

आपका चयनकर्ता संसाधन यहां गलत प्रतीत होता है।आप पारदर्शी पृष्ठभूमि के साथ एक drawable का उपयोग करना चाहिए, और मुझे लगता है कि यह है वास्तव में क्या रंग अपनी पंक्तियों, लेकिन नहीं ListView की choiceMode। कृपया अधिक जानकारी के लिए this एक और उत्तर देखें।

संबंधित मुद्दे