Normalde bu döşemeli liste biçiminde sunmak isteyeceğiniz bazı verileriniz olur. Bu, normalde ContentAdapter'a aktarılır, böylece her bir döşemeyi doldurmak için kullanabilirsiniz. Dakikada tüm içerik, adaptörünüzde değil, XML'de ayarlanır.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="@dimen/tile_padding">
<ImageView
!--Add the id for the ImageView-->
android:id="@+id/tile_image"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:scaleType="centerCrop"
android:src="@drawable/paris" />
...
</RelativeLayout>
Sonra biz ele alabilmeleri TileContentFragment
yılında ViewHolder sınıfını değiştirmek gerekir:
Eğer item_tile
düzenine id niteliği eklemeniz gerekir her biri için görüntüleri değiştirmek isterseniz
ve
TextView
,
item_tile
düzeninde.
public static class ViewHolder extends RecyclerView.ViewHolder {
ImageView tileImage;
TextView tileTitle;
public ViewHolder(View itemView) {
super(itemView);
this.tileImage = (ImageView) itemView.findViewById(R.id.tile_image);
this.tileTitle = (TextView) itemView.findViewById(R.id.tile_title);
}
}
Sonra sadece örnek amaçlı "Merhaba" her karoların başlığını ayarlamak sağlar: Bu yardımcı olur
public static class ContentAdapter extends RecyclerView.Adapter<ViewHolder> {
Other class methods...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tile, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.tileTitle.setText("Hello");
//If you had images for the different tile you could set them here too
//holder.tileImage.setImageResource([THE ID OF YOUR IMAGE HERE])
}
}
Umut.
Teşekkürler! Ben bunu denedim ve –
QUESTION # 1 yaptığınızda rapor vereceğim. "TileTitle" olduğu gibi "TextView tileTitle" olması gereken "public static class ViewHolder .." içinde "TextView tileText" değil = (TextView) tileItem.findViewById ... aşağıdaki "public ViewHolder (LayoutInflater ..)" in "? /// Uygulamayı çalıştırırken bir çift hatam da var: HATA # 1:" Ortak ViewHolder() içinde { hata: ViewHolder sınıfındaki ViewHolder yapıcısı, verilen türlere uygulanamaz; gerekli: Görünüm bulundu: hayır argümanlar nedeni: fiili ve resmi argüman listeleri boyunda farklılık " //// HATA # 2: Ayrıca" kamu ViewHolder() { "hata: super çağrı ilk deyim olmalıdır kurucuda " –
Evet, değişken isimde haklısın, tarayıcıda yapıyordum, böylece hatalar için bir şans vardı! –