Was ich habeRecyclerView Elemente in einem Raster - Android
Moment habe ich eine RecyclerView
die eine Reihe von Bildern lädt und die Ergebnisse sehen wie folgt aus,
Was ich wollen
Allerdings möchte ich die Bilder in der RecyclerView
wie diese stapeln,
aktuelle Code
Dies ist mein aktuelles RecyclerView
Artikel Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/art"
android:layout_gravity="center"
android:layout_marginTop="16dp"/>
</LinearLayout>
Und das ist mein Adpater für die RecyclerView
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder> {
private ArrayList<String> images;
private AdapterCallback mAdapterCallback;
public class MyViewHolder extends RecyclerView.ViewHolder {
public ImageView image;
public MyViewHolder(View view) {
super(view);
image = (ImageView) view.findViewById(R.id.image);
}
}
public ImageAdapter(ArrayList<String> images, Context context) {
this.images = images;
try {
this.mAdapterCallback = ((AdapterCallback) context);
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement AdapterCallback.");
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.image, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
final String imageText = images.get(position);
holder.image.setImageResource(R.drawable.art);
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
mAdapterCallback.imageSelected(imageText);
} catch (ClassCastException exception) {
}
}
});
}
@Override
public int getItemCount() {
return images.size();
}
public static interface AdapterCallback {
void imageSelected(String imageText);
}
}
Initializi ng RecyclerView
recyclerView = (RecyclerView) imagesDialog.findViewById(R.id.recycler_view);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
ImageAdapter mAdapter = new ImageAdapter(images, this);
recyclerView.setAdapter(mAdapter);
Wie kann ich den gewünschten Effekt erzielen?
Sie benötigen einen 'GridLayoutManager'. – EpicPandaForce
Es wäre nützlich zu sehen, wie Sie RecyclerView deklariert und eingerichtet haben. Screenshots und der Adapter sind nette Ergänzungen, obwohl –
@ cricket_007 Ich habe die Initialisierung der 'RecyclerView' und @EpicPandaForce Ich denke, Sie beziehen sich auf, wo ich Benutzer' RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager (getApplicationContext()); '? Ich sollte 'GridLayoutManger' verwenden? –