我试图在列表视图中显示我的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>
我也不知道如何将图片的位图格式发送到适配器,因为它只需要字符串。
有人可以帮我显示图片,名称和描述的列表视图吗?
答案 0 :(得分:0)
其实我觉得我现在有时间做, 我们走了。
但首先您需要阅读并学习listView的自定义适配器
你可以谷歌并了解它是如何工作的, 然后回到这个答案。 here you can findsome good sample for a custom adapter 你真的需要阅读和理解它。
现在,您的某些代码会发生变化
1-修改您的Item
课程以获得位图成员
public Bitmap bitmap;
添加setter和getter更好。但你可以公开并直接访问它
<{1}}活动中的 2- [可选] ,声明Itemlist
而不是Arraylist
在搜索自定义适配器时,您将了解有关此内容的更多信息,因为您可以将数据作为array
或Array
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:此代码并非全部编译,可能包含一些拼写错误, 它只是引导你完成整个过程。