2016-04-30 8 views
17

मैं अपने RecyclerView में समय के साथ फ़ील्ड को बदलने की कोशिश कर रहा हूं। प्रत्येक व्यक्ति ViewHolder में CardView और अंदर कुछ और दृश्य शामिल हैं। एकमात्र दृश्य जिसे मैं एनिमेट करना चाहता हूं वह समय के साथ है।RecyclerView.ViewHolder का आंशिक अद्यतन

adapter.notifyDataSetChanged(); 

RecyclerView with no animations

अपडेट कर रहा है आइटम एक एक करके क्योंकि फिर पूरे CardView चमक मदद नहीं करता है:

int len = adapter.getItemCount(); 
for(int i=0;i<len;i++) { 
    adapter.notifyItemChanged(i); 
} 

enter image description here

आप देख सकते हैं, वहाँ कोई एनीमेशन है क्या सभी ViewHolders की सूची प्राप्त करने का कोई तरीका है, फिर अपडेट करें (एनिमेट) बस एक TextView प्रत्येक के अंदर?

+1

आपको आइटम एनिमेटर –

उत्तर

35

आप अपने RecyclerView.Adapter के पर्यवेक्षकों को एक पेलोड Object पास करके अपने RecyclerView.ViewHolders का आंशिक अपडेट जारी करने के लिए सूचित कर सकते हैं।

notifyItemRangeChanged(positionStart, itemCount, payload); 

कहाँ payload है या एक ध्वज है कि रिश्तेदार या पूर्ण समय का प्रतिनिधित्व करता हो सकता है। अपने दर्शक धारकों को payload को बाध्य करने के लिए, अपने एडाप्टर में निम्न onBindViewHolder(viewHolder, position, payloads) विधि को ओवरराइड करें, और डेटा के लिए payloads पैरामीटर देखें।

@Override 
public void onBindViewHolder(MyViewHolder viewHolder, int position, List<Object> payloads) { 
    if (payloads.isEmpty()) { 
     // Perform a full update 
     onBindViewHolder(viewHolder, position); 
    } else { 
     // Perform a partial update 
     for (Object payload : payloads) { 
      if (payload instanceof TimeFormatPayload) { 
       viewHolder.bindTimePayload((TimeFormatPayload) payload); 
      } 
     } 
    } 
} 

अपने MyViewHolder.bindTimePayload(payload) विधि के भीतर, समय payload में निर्दिष्ट प्रारूप करने के लिए अपना समय TextViews अद्यतन करें।

+1

को खूबसूरती से काम करने की आवश्यकता है। आपका बहुत बहुत धन्यवाद। – PhpXp

+0

भाई आपने दिन बचाया, एक आकर्षण की तरह काम किया, मैं रीसाइक्लर व्यू को देखने के लिए बदल रहा था। लेकिन आपने जवाब भी मुझे सीखने के साथ-साथ अपने घंटों के कड़ी मेहनत से बचाया –

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