मैं रेट्रोफिट के माध्यम से सर्वर से डेटा ला रहा हूँ। यदि डेटा सकारात्मक है तो रंग हरा होना चाहिए अन्यथा यह लाल होना चाहिए। सेंसेक्स की तरह ही अगर यह सकारात्मक है तो यह हरा रंग दिखाता है और लाल। संदर्भ के लिए चित्र देखें। ऑनबाइंड व्यूहोल्डर मैंने नीचे किया है लेकिन यह ग्रिड व्यू में स्थिति के लिए है

@Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        if(position % 2 ==0) {
            holder.itemView.setBackgroundColor(
                    ContextCompat.getColor(holder.itemView.getContext(), R.color.red));
        } else {
            holder.itemView.setBackgroundColor(
                    ContextCompat.getColor(holder.itemView.getContext(), R.color.green));
        }

इसे कैसे हासिल करें।

1
gopssays 16 अगस्त 2021, 09:20

2 जवाब

सबसे बढ़िया उत्तर
    @Override
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
            val data = list[holder.adapterPosition]
            if (data.changeValue > 0) {
                holder.itemView.setBackgroundColor(
                        ContextCompat.getColor(holder.itemView.getContext(), R.color.red));
            } else {
                holder.itemView.setBackgroundColor(
                        ContextCompat.getColor(holder.itemView.getContext(), R.color.green));
            }
    }

जहां data.changeValue 207.57 या -63.85 जैसे एपीआई से आने वाला डेटा मान है (मैंने अभी माना)। मुझे आशा है कि यह समाधान आपकी समस्या का समाधान करेगा।

0
Mohan Kadu 18 अगस्त 2021, 19:03
  1. आप एडेप्टर में डेटा प्रदर्शित करने के लिए एक अलग सूची तैयार कर सकते हैं। जैसे - `List<ListItem> listDisplay= new ArrayList()`
  2. ListItem क्लास बनाएं जो गेटटर () और सेटर () तरीके प्रदान करता है। https://www.w3schools.com/java/java_encapsulation.asp पर जाएं। आप बना सकते हैं इस वर्ग में एक चर और यह गेटर () और सेटर () विधियों पर आधारित है कार्ड दृश्य पर डेटा प्रदर्शित करने के लिए आपकी आवश्यकताएं
  3. जब आप सर्वर से सूची डेटा प्राप्त करेंगे, तो ListItem वर्ग का एक उदाहरण बनाएं और लूप का उपयोग करके प्राप्त मानों को उसके चरों पर सेट करें और सूची सूची में प्राप्त डेटा आइटम जोड़ें
  4. इनिशियलाइज़ेशन के दौरान इस लिस्ट को एडॉप्टर के कंस्ट्रक्टर में पास करें।
  5. एडेप्टर की onBindViewHolder() विधि में, निम्न कोड करें
     position) {
   //create a ListItem
   ListItem listItem = *listMaintainedInAdapter*.get(position)
           
   /*create a instance of adapter's view holder class who holds the 
    views reference.*/
    
   
   /*Check data is positive or not. here, num is variable declared in 
         ListItem class who holds the value which you want to check*/
   
   if(listItem.num > 0){    
         //set card colour to green
   }else{
           //set card colour to red.
   }
}```
0
Komal 17 अगस्त 2021, 08:46