我有膨脹另一佈局(child_layout.xml
)到主佈局(main_layout.xml
)一個RecyclerView適配器。RecyclerView適配器示出多個圖像比它應該是
這裏是RecyclerView適配器:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private static Context context;
private List<Message> mDataset;
public RecyclerAdapter(Context context, List<Message> myDataset) {
this.context = context;
this.mDataset = myDataset;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener, View.OnClickListener {
public TextView title;
public LinearLayout placeholder;
public ViewHolder(View view) {
super(view);
view.setOnCreateContextMenuListener(this);
title = (TextView) view.findViewById(R.id.title);
placeholder = (LinearLayout) view.findViewById(R.id.placeholder);
}
}
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_layout, parent, false);
ViewHolder vh = new ViewHolder((LinearLayout) view);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Message item = mDataset.get(position);
holder.title.setText(item.getTitle());
int numImages = item.getImages().size();
if (numImages > 0) {
View inflater = LayoutInflater.from(holder.placeholder.getContext()).inflate(R.layout.child_layout, holder.placeholder, false);
ImageView image = (ImageView) inflater.findViewById(R.id.image);
Glide.with(context)
.load("http://www.website.com/test.png")
.fitCenter()
.into(image);
holder.placeholder.addView(inflater);
}
}
@Override
public int getItemCount() {
return mDataset.size();
}
}
這裏是main_layout.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<LinearLayout
android:id="@+id/placeholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
這裏是child_layout.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
的問題是,我通過我的應用程序中滾動,一些意見顯示2+圖像(當child_layout
只有一個ImageView
):
http://i.imgur.com/AiYYs9l.png
爲什麼會出現這種情況?爲什麼有些視圖只顯示一個視圖時會顯示多個圖像?
爲什麼你使用兩個單獨的佈局,不合併成一個?你試圖達到什麼目標? – Nevercom
我打算稍後添加一個條件,根據圖像的數量加載不同的子佈局。據我所知,以這種方式誇大孩子的佈局是我提出的唯一方法。 – user5590200
如果您想根據某些條件爲每行使用不同的佈局,則應該使用'getItemViewType'方法,'onCreateViewHolder'的第二個參數返回getItemViewType方法的結果,以便您可以根據排位。 – Nevercom