在listView android中显示图片,名称和描述

时间:2015-12-02 14:44:33

标签: java android xml listview

我试图在列表视图中显示我的Items []中的一些信息,从数据库中恢复信息。我要展示的是图片,名称和描述。请注意,图片是在base64字符串中重试的,所以我必须在发送数据之前将其转换。

我试过了:

ID  |   Key     |   Location
1       25          C:/Licenses/1885-0001.lic
3       21          C:/Licenses/1885-0006.lic

但是我收到了这个错误:

 for(int x=0;x<items.length;x++) {
                    byte[] decodedString = Base64.decode(items[x].Picture, Base64.DEFAULT);
                    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                    ListAdapter adapter = new SimpleAdapter(Itemlist.this, (List<? extends Map<String, ?>>) listView, R.layout.layout, new String[]{items[x].Name, items[x].Description}, new int[]{R.id.move_title, R.id.move_rating});
                    setListAdapter(adapter);
                }

这是活动布局:

 java.lang.ClassCastException: android.widget.ListView cannot be cast to java.util.List

和列表布局:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:background="#ffffff"

>

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

</ListView>

 </RelativeLayout>

这是整个活动类:

  <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="#ffffff"
>

<ImageView
    android:id="@+id/move_poster"
    android:layout_width="100dp"
    android:layout_height="75dp"
    android:layout_alignParentLeft="true"


    />

<View

    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#FFFFFF"
    android:layout_alignRight="@+id/move_poster"
    android:layout_alignEnd="@+id/move_poster"
    android:layout_below="@+id/move_poster">
</View>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/move_title"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/move_poster"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Text"
    android:id="@+id/move_rating"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/move_title"
    android:layout_toRightOf="@+id/move_poster"
    android:layout_toEndOf="@+id/move_poster"
    android:layout_alignBottom="@+id/move_poster" />

 </RelativeLayout>

我也不知道如何将图片的位图格式发送到适配器,因为它只需要字符串。

有人可以帮我显示图片,名称和描述的列表视图吗?

1 个答案:

答案 0 :(得分:0)

其实我觉得我现在有时间做, 我们走了。

但首先您需要阅读并学习listView的自定义适配器

你可以谷歌并了解它是如何工作的, 然后回到这个答案。 here you can findsome good sample for a custom adapter 你真的需要阅读和理解它。

现在,您的某些代码会发生变化

1-修改您的Item课程以获得位图成员

public Bitmap bitmap;

添加setter和getter更好。但你可以公开并直接访问它

<{1}}活动中的

2- [可选] ,声明Itemlist而不是Arraylist 在搜索自定义适配器时,您将了解有关此内容的更多信息,因为您可以将数据作为arrayArray

传递
List

3-修改private ArrayList<Item> items = new ArrayList(); 循环,如下所示:(假设您没有更改为arrayList并仍然使用array [])

for

4-声明适配器(自定义适配器的实例),并将其分配给listView

for(int x=0;x<items.length;x++) {
    byte[] decodedString = Base64.decode(items[x].Picture, Base64.DEFAULT);
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
    items[x].bitmap = decodedByte;
}//for loop end

现在在你的适配器的MyCustomAdapter adapter = new MyCustomAdapter(ItemsList.this, R.layout.list_row, items); setListAdapter(adapter); 方法中,你可以使用memebrs(name,desc,bitmap)来填充每行的自定义布局

是的。

P.S:此代码并非全部编译,可能包含一些拼写错误, 它只是引导你完成整个过程。