【发布时间】:2011-07-07 12:06:53
【问题描述】:
我正在尝试使用 3.1 SDK 创建主屏幕小部件。我遵循了StackWidget 教程。并将StackView 更改为ListView。
我想为列表中的每一行添加一个图像和文本,这些是在运行时加载的。
我在 WidgetProvider.java 类中使用此代码
public RemoteViews getViewAt(int position) {
Bitmap bitmap = ((BitmapDrawable)mWidgetItems.get(position).getImage());
RemoteViews image = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
image.setImageViewBitmap(R.id.widget_image, bitmap );
RemoteViews text = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
text.setTextViewText(R.id.widget_text, mWidgetItems.get(position).getText());
RemoteViews layout = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
Bundle extras = new Bundle();
extras.putInt(StackWidgetProvider.EXTRA_ITEM, position);
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
layout.setOnClickFillInIntent(R.id.widget_item, fillInIntent);
return layout;
}
当我使用StackView 时,所有这些都可以正常工作,但是更改为ListView 会搞砸一切。结果是这样的
只能返回一个视图。所以,如果我添加下面的代码,就会出现这个问题,如果我不添加,那么列表的内容就是空的。
layout.addView(R.id.widget_item, image);
layout.addView(R.id.widget_item, text);
我如何向小部件添加多个视图? 为什么这适用于 StackView 而不是 ListView? 以及如何纠正这个问题?
非常感谢任何帮助。
编辑
widget_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/widget_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"/>
<TextView
android:id="@+id/widget_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:layout_weight="1"
android:textColor="#000000"/>
</LinearLayout>
【问题讨论】:
-
我在上面试图做的是显示所有应用程序的列表,其中包名称以
com.google.android开头及其相关图标。
标签: android listview android-3.0-honeycomb android-appwidget stackview