Android 再循环视图:为适配器中的另一条管路布局充气
我正在尝试在必要时将两行线性布局充气到我的自定义适配器中。为了避免在ListView的边缘截断膨胀的LinearLayout,我想将每行膨胀的图像数限制为5 BLOCKLAYOUT.XMLAndroid 再循环视图:为适配器中的另一条管路布局充气,android,android-layout,android-recyclerview,android-linearlayout,layout-inflater,Android,Android Layout,Android Recyclerview,Android Linearlayout,Layout Inflater,我正在尝试在必要时将两行线性布局充气到我的自定义适配器中。为了避免在ListView的边缘截断膨胀的LinearLayout,我想将每行膨胀的图像数限制为5 BLOCKLAYOUT.XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" a
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
在那里,当我到达图像列表中的第5项时,我应该以水平方向将另一行/行线性布局充气。。。显然是第6项,而不是第1项
public BlockAdapter(Context context,List<Cscore> blocks, int pos) {
this.mContext = context;
this.blocks = blocks;
this.currentPosition = pos;
}
@Override
public int getItemCount() {
return 1;
}
@Override
public BlockAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.block_layout, parent, false));
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if(blocks != null) {
holder.bind(blocks.get(currentPosition),null);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final List<ImageView> imageViews = new ArrayList<>();
private final ViewGroup container;
public ViewHolder(View v) {
super(v);
container = (ViewGroup) itemView;
}
public void bind(Cscore block) {
recycleImageViews();
if(block !=null) {
for (int i = 0; i < block.getMaxscore(); ++i) {
final ImageView imageView = getRecycledImageViewOrCreate();
Picasso.get().load(block.getImgurl()).into(imageView);
imageViews.add(imageView);
container.addView(imageView);
}
}
}
private ImageView getRecycledImageViewOrCreate() {
if (imageViewPool.isEmpty()) {
return (ImageView)LayoutInflater.from(container.getContext()).inflate(R.layout.imageView, container, false);
}
return imageViewPool.remove(0);
}
public void recycleImageViews() {
imageViewPool.addAll(imageViews);
imageViews.clear();
container.removeAllViews();
}
}
@Override
public void onViewRecycled(ViewHolder holder) {
super.onViewRecycled(holder);
holder.recycleImageViews();
}
}
<ImageView android:id="@+id/block"
android:layout_width="@dimen/icon_l"
android:layout_height="@dimen/icon_l" />
public void bind(Cscore block) {
recycleImageViews();
if(block !=null) { ...}
imageViews.add(imageView);
container.addView(imageView);
}