2015-07-01 21 views
11

Tworzę elementy: RecycleView z niektórymi elementami. Więc trzeba uzyskać szerokość i wysokość jednego rzędu RecycleViewUzyskaj szerokość i wysokość jednego wiersza w oknie RecycleView - Android

Tutaj tworzę RecycleView:

RecyclerView rvSmetki = (RecyclerView) findViewById(R.id.rvArtikli); 
    rvSmetki.setLayoutManager(new GridLayoutManager(this, 3);); 
    rvSmetki.setAdapter(new ArtikliAdapter(this)); 

    // Here I want to get width and height.... 

A to moja ArtikliAdapter:

public class ArtikliAdapter extends RecyclerView.Adapter<ArtikliAdapter.ViewHolder> { 

    private static Context context; 

    private LayoutInflater inflater; 
    private ArrayList<Artikl> artikliList; 

    public ArtikliAdapter(Context context) { 
     this.context = context; 
     inflater = LayoutInflater.from(context); 
     artikliList = LogInActivity.getArtiklList(); 
    } 

    @Override 
    public ArtikliAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View row = inflater.inflate(R.layout.artikli_row, parent, false); 
     return new ArtikliAdapter.ViewHolder(row); 
    } 

    @Override 
    public void onBindViewHolder(ArtikliAdapter.ViewHolder holder, int position) { 
     Artikl currentArtikl = artikliList.get(position); 

     holder.tvNaziv.setText(currentArtikl.getNaziv()); 
     holder.tvCena.setText("Цена: " + currentArtikl.getProdaznaCena()); 
    } 

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

    static class ViewHolder extends RecyclerView.ViewHolder { 

     private RelativeLayout rlArtikl; 
     private TextView tvNaziv; 
     private TextView tvCena; 

     public ViewHolder(View itemView) { 
      super(itemView); 

      rlArtikl = (RelativeLayout) itemView.findViewById(R.id.rlArtikl); 
      tvNaziv = (TextView) itemView.findViewById(R.id.tvNaziv); 
      tvCena = (TextView) itemView.findViewById(R.id.tvCena); 
     } 
    } 
} 

Image

Jak mogę uzyskać szerokość i wysokość jednego rzędu? Jak mogę uzyskać szerokość i wysokość jednego rzędu?

+0

Witam, Czy rozwiązałeś już problem? Dostałem wartość zwracaną 0. –

Odpowiedz

15
@Override 
public void onBindViewHolder(final MyAdapter.MyViewHolder holder, int position) 
{ 
..... 
    holder.itemView.post(new Runnable() 
    { 
     @Override 
     public void run() 
     { 

      int cellWidth = holder.itemView.getWidth();// this will give you cell width dynamically 
      int cellHeight = holder.itemView.getHeight();// this will give you cell height dynamically 

     } 
    }); 
    ..... 
} 

Mam nadzieję, że to ci pomoże!

+4

Zwraca 0. Ale tak naprawdę chcę uzyskać szerokość i wysokość w Działaniu, a nie w Adapter ... – KiKo

+1

Użyj interfejsu, aby przesłać te dane z powrotem do aktywności –

+0

Tak, Zwraca 0. Nie działa @AmrutBidri . Czy możesz wyjaśnić więcej szczegółów/ –

Powiązane problemy