我需要在getView方法中生成一些ImageView。
我会在这个布局中生成它们:
<LinearLayout
android:id="@+id/layoutBaby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal" >
因此图像将水平添加自动(因为orientation
)。
这是我添加这些图片的方式:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
for(int childId : dbHelper.getChildrenIdBySchedule(getItem(position).getId()))
{
ImageView imgBaby = new ImageView(context);
imgBaby.setLayoutParams(params);
String image = dbHelper.getChildImage(childId);
File imgFile = new File(image);
if(imgFile.exists())
{
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
imgBaby.setImageBitmap(myBitmap);
}
else
{
imgBaby.setImageResource(R.drawable.ic_launcher);
}
holder.layoutBaby.addView(imgBaby);
}
我调试了上面的代码,以确保多次调用它(基于dbHelper.getChildrenIdBySchedule
)。
如果只有1 ImageView
,则此代码有效,但如果有{1}}以上,则只有最新添加ImageView
是可以保留的。
例如,如果theres 2 ImageView
,虽然它们都已添加(我调试代码),但只有第二个ImageViews
可见。
随时问我什么,谢谢你的时间。
答案 0 :(得分:1)
您可以使用HorizontalScrollView
:
public View getView(int position, View view, ViewGroup viewgroup) {
ViewHolder holder = new ViewHolder(); // our view holder of the row
if (view == null) {
HorizontalScrollView hr = new HorizontalScrollView(con);
LinearLayout layout = new LinearLayout(con);
layout.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
for(int childId : dbHelper.getChildrenIdBySchedule(getItem(position).getId()))
holder.image = new ImageView(con);
layout.addView(holder.image);
String image = dbHelper.getChildImage(childId);
File imgFile = new File(image);
if(imgFile.exists())
{
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
holder.image.setImageBitmap(myBitmap);
}
else
holder.image.setImageResource(R.drawable.ic_launcher);
}
hr.addView(layout);
view = hr;
view.setTag(holder);
}
holder = (ViewHolder) view.getTag();
return view;
}