2016-10-04 4 views
1

첫 번째 그림에서 볼 수 있듯이 gridview입니다. 이제 gridview의 특정 부분에 두 번째 그림과 같이 머리글을 추가하고 싶습니다. 나는 이것을 성취하기 위해 고심하고있다.Gridview에서 헤더를 만드는 방법은 무엇입니까?

이보기를 달성하는 방법에 대해 알고 싶습니다.

enter image description here enter image description here

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     holder = null; 

     Product productItem = (Product) productList.get(position); 

     if (row == null) { 


       LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
       row = inflater.inflate(R.layout.products_grid_item_layout, parent, false); 
       holder = new ViewHolder(); 
       holder.productImage = (ImageView) row.findViewById(R.id.productImage); 
       holder.productImageClone = (ImageView) row.findViewById(R.id.productImageClone); 
       holder.detailsIcon = (ImageView) row.findViewById(R.id.detailsIcon); 
       holder.productTitle = (TextView) row.findViewById(R.id.productTitle); 
       holder.productSubTitle = (TextView) row.findViewById(R.id.productSubTitle); 
       holder.productQuantity = (TextView) row.findViewById(R.id.productQuantity); 
       holder.priceDollar = (TextView) row.findViewById(R.id.priceDollar); 
       holder.priceCent = (TextView) row.findViewById(R.id.priceCent); 
       holder.productCount = (TextView) row.findViewById(R.id.productCount); 
       holder.productGridLayout = (RelativeLayout) row.findViewById(R.id.productGridLayout); 

       row.setTag(holder); 

     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 



     String price = productItem.getPrice().toString(); 

     String[] pricearray; 
     pricearray = price.split("\\."); 

     holder.productTitle.setText(productItem.getTitle().toString()); 
     holder.productSubTitle.setText(productItem.getSubtitle().toString()); 
     holder.productQuantity.setText(productItem.getVolume().toString()); 
     holder.priceDollar.setText(pricearray[0]+"."); 
     holder.priceCent.setText(pricearray[1]); 


     if(productItem.getInCart()) { 
      holder.productCount.setVisibility(View.VISIBLE); 
      holder.productCount.setText(productItem.getVolume()); 
     } 

     Picasso.with(context) 
       .load(productItem.getImageUrl()) 
       .placeholder(R.drawable.favourites) 
       .error(R.drawable.favourites) 
       .into(holder.productImage); 

     Picasso.with(context) 
       .load(productItem.getImageUrl()) 
       .placeholder(R.drawable.favourites) 
       .error(R.drawable.favourites) 
       .into(holder.productImageClone); 

     urlSlug = productItem.getUrlSlug(); 


     holder.detailsIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       final int position = currentGridView.getPositionForView(v); 
       Log.e("grid position", position+""); 

       Intent productDetailIntent = new Intent(context,ProductDetailActivity.class); 
       productDetailIntent.putExtra("url_slug", productList.get(position).getUrlSlug()); 

       context.startActivity(productDetailIntent); 
      } 

     }); 

     return row; 
    } 
+0

가 해결 ISIT 사용할 수 있습니다 ????? –

답변

1

01 헤더를

public class ListAsGridExampleAdapter extends ListAsGridBaseAdapter { 

    Integer[] mArray = new Integer[] {1,2,3,4,5,6,7,8,9,10,11,12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; 

    private LayoutInflater mInflater; 

    public ListAsGridExampleAdapter(Context context) { 
     super(context); 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public Integer getItem(int position) { 
     return mArray[position]; 
    } 

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

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

    @Override 
    protected View getItemView(int position, View view, ViewGroup parent) { 
     if (view == null) { 
      view = mInflater.inflate(R.layout.simple_list_item, null); 
     } 
     TextView tv = (TextView) view.findViewById(R.id.text);   
     tv.setText(String.valueOf(getItem(position))); 
     return view; 
    } 

} 

https://android.googlesource.com/platform/packages/apps/Gallery2/+/idea133/src/com/android/photos/views/HeaderGridView.java

https://github.com/liaohuqiu/android-GridViewWithHeaderAndFooter

그리드를 추가 할 this 방법을 시도 23,967,628,바닥 글

또한 StickyHeader

+0

고마워요. StickyHeader를 사용했는데 스크롤 할 때 충돌이 발생했습니다. " holder.productTitle.setText (productItem.getTitle(). toString());에서 null 포인터 객체 참조를 제공합니다. –

+0

NPE는 사용자의 settext ..에 문제가 있음을 의미합니다. 응답이 받아 들일 수 있다면 ... –

+0

NPE에 대해 알고 있지만 왜 StickyHeader를 사용하기 전에 작동했는지 궁금합니다. 당신의 도움을 주셔서 감사합니다 :) –

관련 문제