2012-09-25 6 views
5

मैं सूचीदृश्य में किसी विशिष्ट आइटम का पृष्ठभूमि रंग सेट करना चाहता हूं।स्थिति द्वारा सूचीदृश्य में किसी विशिष्ट आइटम का पृष्ठभूमि रंग कैसे सेट करें?

मेरी सूचीदृश्य ArrayAdapter द्वारा ArrayList का उपयोग करके उत्पन्न होता है।

मेरे पास सूचीदृश्य में एक विशिष्ट आइटम है कि मैं पृष्ठभूमि रंग बदलने की योजना बना रहा हूं।

मुझे सूची में आइटम की स्थिति पता है।

यह सूचीदृश्य उत्पन्न करने के लिए मेरा कोड है।

respondMessageListView = (ListView) findViewById(R.id.respondMessageListView); 
respondMessageListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, autoRespondMessages.getMessages())); 

धन्यवाद!

[संपादित करें]

this post के अनुसार, setSelection का उपयोग कर कोई प्रभाव नहीं करता है, तो OnCreate (में प्रयोग किया जाता है) करता है, काम के आसपास है "PullToRefreshListView में विधि onAttachedToWindow निकालें"। मैं समाधान को काफी समझ नहीं रहा हूं। क्या मैं पूछ सकता हूं कि मुझे इसे कैसे पूरा करना चाहिए? मैं Activity का उप-वर्ग हूं, इसलिए मैं अब किसी भी अन्य वर्ग को उपclass नहीं कर सकता।

+0

क्या आपने यह कोशिश की है http://stackoverflow.com/questions/6055277/set-a-background-color-to-a-selected-listview-item-in-android –

+0

मैंने कोशिश की, यह मुझे मेरी सूची पर nullpointerexception देता है । .getSelectedView() setBackgroundColor (getResources() getColor (Color.RED)।); – ssgao

उत्तर

2

आपको ArrayAdapter उप-वर्ग करना होगा और getView(...) विधि को ओवरराइड करना होगा। सादगी के लिए आप बस बेस क्लास कार्यान्वयन के माध्यम से कॉल कर सकते हैं और लौटा View के लिए पृष्ठभूमि रंग सेट कर सकते हैं।

संपादित करें: निम्नलिखित उदाहरण काले और सफेद रंगों की वस्तुओं की पृष्ठभूमि को रंग देता है।

private class MyAdapter extends ArrayAdapter { 

    ... 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = super.getView(position, convertView, parent); 
     v.setBackgroundColor(position % 2 == 0 : 0xff000000, 0xffffffff); 
    } 
} 
+0

मैंने पहले से ही गतिविधि – ssgao

+0

उपclassed एक ही बात नहीं है। Subclassing ArrayAdapter आपको आवश्यक विधि को ओवरराइड करने की अनुमति देता है। उप-वर्गीकरण गतिविधि आपको कुछ भी नहीं मिलती है। यहाँ। – zienkikk

+0

उम .. मेरा मतलब है कि मैं केवल एक वर्ग को उपclass कर सकता हूं ... इसलिए यदि मैंने गतिविधि को उपclassed है, तो मैं अब ArrayAdapter को उपclass नहीं कर सकता – ssgao

0

यह कोड तब होता है जब आप listitem चुनते हैं।

इस कोड का प्रयास करें ...

listview.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> myAdapter, View myView, int pos, long mylng) { 

      if(pos == 1) { 
        // to change the listview background 
        listview.setBackgroundColor(getResources().getColor(R.color.your_color_id)); 

        // to change the selected item background color 
        myView.setBackgroundColor(getResources().getColor(R.color.your_color_id)); 
      } 
      } 
      }); 

गुड लक।

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