2016-02-02 23 views
5

Tôi có HorizontalGridView và tất cả đều hoạt động tốt, tuy nhiên tôi đang tải hình ảnh với Picasso và bất cứ khi nào ảnh tải, HorizontalGridView sẽ quay lại vị trí đầu tiên/bắt đầu cuộn. Tôi cũng có một mảnh bản đồ về hoạt động và nhận thấy rằng khi bản đồ được tương tác với, HorizontalGridView hiển thị cùng một hành vi. Dưới đây là mã bộ điều hợp. Hãy giúp đỡ, đã bị mắc kẹt trên một này trong một vài ngày bây giờ ...HorizontalGridView/RecyclerView di chuyển vị trí cuộn khi hình ảnh Picasso tải

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; 
} 

}

Trả lời

4

Vì vậy, cuối cùng tôi đã được quản lý để giải quyết thế này. Hóa ra tôi chưa đặt số LayoutManager cho số HorizontalGridView. Cụ thể, trong hoạt động tôi đặt bộ điều hợp:

// 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); 

Hy vọng điều này sẽ tiết kiệm một số cơn đau đầu, như tôi đã thấy câu hỏi này nổi xung quanh chưa có giải pháp chính xác.

Các vấn đề liên quan