2016-02-02 8 views
5

मेरे पास क्षैतिज ग्रिड व्यू है और सभी अच्छी तरह से काम कर रहे हैं, हालांकि मैं पिकासो के साथ छवियों को लोड कर रहा हूं और जब भी कोई छवि लोड हो जाती है, क्षैतिज ग्रिड व्यू पहले आइटम/प्रारंभिक स्क्रॉल स्थिति पर वापस आ जाता है। मेरे पास गतिविधि पर नक्शा खंड भी है और ध्यान दें कि जब मानचित्र के साथ बातचीत की जाती है, तो क्षैतिज ग्रिड व्यू एक ही व्यवहार को प्रदर्शित करता है। नीचे एडाप्टर कोड है। कृपया मदद, अब कुछ दिनों के लिए यह एक पर अटक गया है ...क्षैतिज ग्रिड व्यू/रीसाइक्लर स्क्रू स्थिति रीसेट करें एक बार पिकासो छवि लोड

public class GridElementAdapter extends RecyclerView.Adapter<GridElementAdapter.SimpleViewHolder>{ 

private Context context; 
private Deal[] mDeals; 


public GridElementAdapter(Context context, Deal[] deals){ 
    this.context = context; 
    this.mDeals = deals; 

} 

public static class SimpleViewHolder extends RecyclerView.ViewHolder { 

    public final ImageView dealImage; 
    public final TextView dealTitle; 
    public final TextView dealSubtitle; 
    public final TextView dealPrice; 
    public final TextView dealTime; 
    public final TextView dealDays; 


    public SimpleViewHolder(View view) { 
     super(view); 

     dealImage = (ImageView) view.findViewById(R.id.gridDealImageView); 
     dealTitle = (TextView) view.findViewById(R.id.gridTitleLabel); 
     dealSubtitle = (TextView) view.findViewById(R.id.gridSubtitleLabel); 
     dealPrice = (TextView) view.findViewById(R.id.gridPriceLabel); 
     dealTime = (TextView) view.findViewById(R.id.gridAvailableTimeLabel); 
     dealDays = (TextView) view.findViewById(R.id.gridAvailableDaysLabel); 
    } 
} 

@Override 
public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    final View view = LayoutInflater.from(this.context).inflate(R.layout.deal_grid_item, parent, false); 
    return new SimpleViewHolder(view); 
} 

@Override 
public void onBindViewHolder(SimpleViewHolder holder, final int position) { 

    String dealImageUrl = "http://api.cheapeat.com.au/deals/" + mDeals[position].getPhotoId() + "/photo"; 

    Context context = holder.dealImage.getContext(); 
    Picasso.with(context).load(dealImageUrl).placeholder(R.drawable.deal_image_placeholder).into(holder.dealImage); 
    holder.dealTitle.setText(mDeals[position].getName()); 
    holder.dealPrice.setText(mDeals[position].getPriceData()); 
    holder.dealSubtitle.setText(mDeals[position].getDescription()); 
    holder.dealTime.setText(mDeals[position].getAvailabilityTime()); 
    holder.dealDays.setText(mDeals[position].getFormattedAvailableDays(mDeals[position].getAvailabilityDay())); 


} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public int getItemCount() { 
    return this.mDeals.length; 
} 

}

उत्तर

4

तो मैं अंत में यह एक का समाधान करने में कामयाब रहे। बाहर निकलता है मैंने HorizontalGridView के लिए LayoutManager सेट नहीं किया था।

// Had this 
horizontalGridView = (HorizontalGridView) findViewById(R.id.gridView); 
GridElementAdapter adapter = newGridElementAdapter(VenueProfileActivity.this, mDeals); 
horizontalGridView.setAdapter(adapter); 

// This needed to be added 
HorizontalGridView.LayoutManager layoutManager = new LinearLayoutManager(VenueProfileActivity.this, LinearLayoutManager.HORIZONTAL, false); 
horizontalGridView.setLayoutManager(layoutManager); 
horizontalGridView.setHasFixedSize(true); 

उम्मीद है कि यह कुछ सिर दर्द की बचत होती है, जैसा कि मैंने अभी तक इस सवाल का कोई सही समाधान के साथ चारों ओर चल देखा है: विशेष रूप से, गतिविधि में जहाँ मैं एडाप्टर निर्धारित किया है।

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