/ / Android:ListView App Widgetに複数のビューを追加する - android、listview、android-3.0-honeycomb、android-appwidget、stackview

Android:ListView App Widgetに複数のビューを追加する - android、listview、android-3.0-honeycomb、android-appwidget、stackview

私は、3.1 SDKを使用してホームスクリーンウィジェットを作成しようとしています。私は StackWidget チュートリアル。そして、 StackViewListView。 私は自分のリストの各行にイメージとテキストを追加したいが、これは実行時にロードされる。

私はこのコードを私の 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 すべてを駄目にする。結果はこれです

ここに画像の説明を入力

1つのビューのみが返されます。したがって、次のコードを追加すると、この問題が発生します。追加しないと、リストのコンテンツは空になります。

layout.addView(R.id.widget_item, image);
layout.addView(R.id.widget_item, text);

ウィジェットに複数のビューを追加するにはどうすればいいですか? これはなぜListViewではなくStackViewで機能するのですか? どのように私はこれを修正するのですか?

どんな助けでも大歓迎です。

EDIT

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>

回答:

回答№1は1

あなたは最初から適切なレイアウトを膨らませることでこれを修正します。 R.layout.widget_image あなたが持っているものは何でも持っているはずです R.layout.widget_image そして R.layout.widget_item.

これは次のようになります:

  • より速く実行する(同じビジュアルエンドを達成するための命令がより少ない)
  • より少ないJavaコード
  • 少ないレイアウトコード(1つのレイアウトファイルと3つのレイアウトファイル)
  • レイアウトコードを簡単に管理できます(Eclipseのビジュアルエディタを使用してリストの行をよりよく管理できます)

また、特別なボーナスとして、サポートされている AdapterViewベースのアプリウィジェットです。