2015-10-08 1 views
-1

Bonjour les gars J'ai un problème pour ajouter Gridlayout en utilisant RecycleView, mais je ne peux pas laisser aligné la ligne avec Column.Comment aligner la colonne dans GridLayout RecycleView en utilisant setSpanSizeLookup dans Android

Pourriez-vous s'il vous plaît m'aider à comprendre comment faire pour aligner la ligne avec 2 colonne suivre mon code.

Printout of the my Screen


Tab1.class

 private List<Consultorio> consultorioList; 
private ClinicaAdapter adapter; 
protected RecyclerView mRecyclerView; 

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v =inflater.inflate(R.layout.tab1, container, false); 

    RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.itens_fragment); 
    GridLayoutManager manager = new GridLayoutManager(v.getContext(), 3); 
    manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      return (3 - position % 3); 
     } 
    }); 
    recyclerView.setLayoutManager(manager); 



    /*LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity().getBaseContext()); 
    recyclerView.setLayoutManager(linearLayoutManager); 
    recyclerView.setHasFixedSize(true);*/ 
    List<Consultorio> list = new ArrayList<Consultorio>(); 
    Consultorio c0 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c1 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c2 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c3 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c4 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c5 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c6 = new Consultorio(R.mipmap.ic_launcher); 
    Consultorio c7 = new Consultorio(R.mipmap.ic_launcher); 
    list.add(c0); 
    list.add(c1); 
    list.add(c2); 
    list.add(c3); 
    list.add(c4); 
    list.add(c5); 
    list.add(c6); 
    list.add(c7); 

    adapter = new ClinicaAdapter(list); 
    recyclerView.setAdapter(adapter); 
    return v; 
} 

}

ClinicaAdapter.class

public class ClinicaAdapter extends RecyclerView.Adapter<ClinicaAdapter.ViewHolder> { 
List<Consultorio> consultorioList; 
Boolean isHomeList = false; 

private List<Consultorio> mEspecialistas; 

public ClinicaAdapter(List<Consultorio> data) { 
    mEspecialistas = data; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.clinica_medica_item, parent, false); 
    return new ViewHolder(itemView); 
} 

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

    //Consultorio consultorio = consultorioList.get(position); 

    holder.imageViewPhoto.setImageResource(R.mipmap.ic_launcher); 
} 

@Override 
public int getItemCount() { 
    return mEspecialistas.size(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 

    public ImageView imageViewPhoto; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     imageViewPhoto = (ImageView) itemView.findViewById(R.id.clinc_img); 
    } 
} 

}

Répondre

0

Ceci est la réponse à ma question.

En Tab1.class je mets le code de suivi:

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v =inflater.inflate(R.layout.tab1, container, false); 

    RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.itens_fragment); 

    GridLayoutManager manager = new GridLayoutManager(v.getContext(), 2, GridLayoutManager.VERTICAL, false); 
    manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      return (position % 3 == 0 ? 2 : 1); 
     } 
    }); 
    recyclerView.setLayoutManager(manager); 

ref: http://pt.slideshare.net/devunwired/mastering-recyclerview-layouts