6

देता है किसी कारण से मैं holder.getAdapterPosition() का उपयोग करने में सक्षम नहीं हूं क्योंकि यह हमेशा -1 देता है लेकिन holder.getLayoutPosition() एक स्थिति को ठीक करता है।viewHolder.getAdapterPosition() हमेशा -1

मेरे onCreateViewHolder:

@Override

public ViewHolder onCreateViewHolder(ViewGroup parent, 
            int viewType) { 
    // create a new view 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.my_item, parent, false); 


    ViewHolder vh = new ViewHolder(this, v); 
    return vh; 
} 

मेरे ViewHolder निर्माता:

public ViewHolder(DirectoryListAdapter adapter, View linear) { 
      super(linear); 
      this.adapter = adapter; 
      this.linear = (LinearLayout) linear; 
      this.entryName = (TextView) linear.findViewById(R.id.item_name); 
      this.entryImage = (ImageView) linear.findViewById(R.id.item_image); 

} 

मैं थोड़ा आगे देखा और getAdapterPosition इस तरह दिखता है:

public final int getAdapterPosition() { 
      final ViewParent parent = itemView.getParent(); 
      if (!(parent instanceof RecyclerView)) { 
       return -1; 
      } 
      final RecyclerView rv = (RecyclerView) parent; 
      return rv.getAdapterPositionFor(this); 
     } 

और मूल रूप से क्या हो रहा है यह है कि व्यूपेंट शून्य है। कोई विचार क्यों हो सकता है?

इसके अलावा मेरा रीसाइक्लिंग ठीक काम कर रहा है।

धन्यवाद।

उत्तर

0

यह समर्थन पुस्तकालय (22.1.0) के नए संस्करण पर कोई समस्या नहीं प्रतीत होता है।

1

यदि माता-पिता शून्य हैं, तो इसका अर्थ है कि व्यूहोल्डर रीसाइक्लिंग व्यू का बच्चा नहीं है, इस प्रकार हम इसकी स्थिति को ट्रैक नहीं कर रहे हैं। लेआउट स्थिति इसकी नवीनतम स्थिति है जब इसे रखा गया था।

निम्नलिखित रिलीज में, हम getAdapterPosition का दायरा बढ़ाएंगे।

+1

तो क्या मैं कुछ गलत कर रहा हूं? क्या मुझे माता-पिता को स्थापित करना चाहिए? – casolorz

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