2017-08-11 12 views
1

私のRecyclerViewのヘッダーを設定する際に問題があります。 RecyclerViewアダプターで次のコードを使用してヘッダー・ビューを設定しましたが、リスト内のヘッダー・ビューのみを表示していて、list_itemレイアウトを拡張していません。ここRecyclerViewのヘッダービューを設定する際の問題

は私のコードである:ここ

package com.example.samarthkejriwal.easyroads; 

import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.example.samarthkejriwal.easyroads.Rv_adapter.MyViewHolder; 

import java.util.ArrayList; 

/** 
* Created by samarthkejriwal on 10/08/17. 
*/ 

public class Rv_adapter extends RecyclerView.Adapter<MyViewHolder> { 

    private ArrayList<PlacesResponse.CustomA> stLstStores; 
    private ArrayList<Modal> models; 

    private static final int TYPE_HEAD=0; 
    private static final int TYPE_LIST=1; 

    public Rv_adapter(ArrayList<PlacesResponse.CustomA> stores, ArrayList<Modal> storeModels) { 

     stLstStores = stores; 
     models = storeModels; 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 


     if(viewType==TYPE_LIST) { 
      View itemView = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.recyclerview_listitem, parent, false); 

      return new MyViewHolder(itemView,viewType); 
     } 
     else if(viewType==TYPE_HEAD) 
     { 
      View itemView = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.recyclerview_header, parent, false); 

      return new MyViewHolder(itemView,viewType); 
     } 
     return null; 
    } 

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

     Log.i("adapter_posn",holder.getAdapterPosition()+""); 

     Log.i("view type",holder.view_type+""); 
      if(holder.view_type == TYPE_LIST) { 

       holder.res_name.setText(stLstStores.get(holder.getAdapterPosition()-1).name); 
//    holder.res_address.setText(models.get(holder.getAdapterPosition()).address); 
//    holder.res_phone.setText(models.get(holder.getAdapterPosition()).phone_no); 
//    holder.res_rating.setText(String.valueOf(models.get(holder.getAdapterPosition()).rating)); 
//    holder.res_distance.setText(String.valueOf(models.get(holder.getAdapterPosition()).distance)); 
      } 
      else if (holder.view_type == TYPE_HEAD) 
      { 
//    holder.current_location.setText(String.valueOf(models.get(holder.getAdapterPosition()).current_location)); 
      } 
    } 

    @Override 
    public int getItemCount() { 
     Log.i("count: ",stLstStores.size()+""); 
     Log.i("count1",models.size()+""); 
     return stLstStores.size(); 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 

     TextView res_name; 
     TextView res_rating; 
     TextView res_address; 
     TextView res_phone; 
     TextView res_distance; 
     TextView current_location; 
     int view_type; 

     public MyViewHolder(View itemView,int viewType) { 
      super(itemView); 

      if(viewType == TYPE_LIST) { 

       view_type=1; 
       this.res_name = (TextView) itemView.findViewById(R.id.name); 
       this.res_rating = (TextView) itemView.findViewById(R.id.rating); 
       this.res_address = (TextView) itemView.findViewById(R.id.address); 
       this.res_phone = (TextView) itemView.findViewById(R.id.phone); 
       this.res_distance = (TextView) itemView.findViewById(R.id.distance); 
      } 
      else if(viewType == TYPE_HEAD){ 
       view_type = 0; 
       this.current_location = (TextView) itemView.findViewById(R.id.location_tv); 

      } 
     } 


    } 
} 

RecyclerViewためのスクリーンショットである:スクリーンショットで

enter image description here

のみヘッダビュー全体RecyclerView

介して表示されています
+0

で使用されるヘッダーが膨張した後、ビュータイプの確認値を変更する必要があります。 –

答えて

1

メソッドに追加

@Override 
public int getItemViewType(int position) { 

    if(position==0){ 
     return TYPE_HEAD; 
    } else { 
     return TYPE_LIST; 
    } 
} 

の代わりview_type機能

+0

はいそれは今働いています。小さな間違いと今は、完了、ありがとう:) –