使用Bitmap ArrayList动态填充ListView

时间:2015-03-19 11:49:08

标签: java android listview arraylist bitmap

我是android新手所以请容忍我缺乏知识。 我的应用程序正在拍照并将它们保存到Bitmap ArrayList,它可以工作,我测试了它,照片可以使用ImageViews显示。负责拍照的一切都是这样的:

//declaration
List<Bitmap> bmpList = new ArrayList<Bitmap>();

//onClick method of button for takin pics
public void takePic(View view){
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, 0);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == 0){
        Bitmap image = (Bitmap) data.getExtras().get("data");
        bmpList.add(image);
        adapter.notifyDataSetChanged(); //more about my adapter and stuff below
    }
}

我也有ListView,我正在扩展ListActivity而不仅仅是Activity,因为我发现了web中动态String ArrayList的工作解决方案。 ListView的XML声明:(使用该方法,我不必在Java代码中声明它)

<ListView android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_below="@+id/photoButton" 
android:id="@android:id/list"> 
</ListView>

我也使用Bitmap适配器:

ArrayAdapter<Bitmap> adapter;

然后在onCreate方法中初始化它:

adapter = new ArrayAdapter<Bitmap>(this, R.layout.item, bmpList);
setListAdapter(adapter);

item.xml是我遇到的问题。我不知道如何创建包含ImageView的工作ListView项目,该项目最好能够在左侧显示我的Bitmap ArrayList元素。我尝试添加一个ImageView,但保存照片后应用程序崩溃。我的首选功能是左侧有照片,中间是简短说明,右侧是评级栏,点击项目会将用户带到另一个活动,其中可以修改说明和评级,还可以显示完整尺寸的照片。某种暗示会有很长的路要走!提前谢谢!

1 个答案:

答案 0 :(得分:1)

您应该实现自定义适配器,处理图像并夸大列表。您可以找到有用的教程here,其中介绍了如何使用listViews和适配器,以及如何创建自己的列表项。

您可以像通常的布局一样创建自定义XML项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="22px"
        android:layout_height="22px"
        android:layout_marginLeft="4px"
        android:layout_marginRight="10px"
        android:layout_marginTop="4px"
        android:src="@drawable/ic_launcher" >
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="20px" >
    </TextView>

</LinearLayout> 

但是要向其中添加图片,您必须实现自己的custom adapter