1

3.1 SDKを使用してホームスクリーンウィジェットを作成しようとしています。私はStackWidgetチュートリアルに従った。 StackViewListViewに変更しました。 私のリストの各行に画像とテキストを追加したいのですが、これらは実行時に読み込まれます。私は私のWidgetProvider.javaクラスAndroid:ListView Appウィジェットに複数のビューを追加する

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つのビューのみを返すことができ、この

enter image description here

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

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

他にどのように複数のビューをウィジェットに追加できますか? これはStackViewでは動作しますが、ListViewでは動作しないのはなぜですか? どうすればよいですか?

ご協力いただきまして誠にありがとうございます。

<?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> 
+0

私が上でやろうとしていたのは、パッケージ名が 'com.google.android'で始まるすべてのアプリとそれに関連するアイコンのリストでした。 –

答えて

1

widget_item.xml

EDIT

あなたは最初から右のレイアウトを膨らませることによってこれを修正。 R.layout.widget_imageには、R.layout.widget_imageR.layout.widget_itemの中にあなたが持っているものは既にあるはずです。

このようになります。

  • (同じ視覚目的を達成するために少ない命令)を実行するより速く
  • 以下のJavaコード
  • 少ないレイアウトコード(3対1つのレイアウトファイル)
  • をするのが容易レイアウトコードを維持する(Eclipseのビジュアルエディタを使用してリストの行をより良く維持することができます)

サポートされているAdapterViewベースのアプリウィジェットであれば正常に動作します。

+0

うーん..私は完全に理解していないと思う。残念だが、このウィジェットのコンセプトは私が理解するのが少し難しい。私は質問を更新し、レイアウトコードを追加しました。 xmlとコードにどのような変更を加えるべきか教えてください。 –

+0

@rohith:あなたは 'widget_item.xml'、' widget_text.xml'、 'widget_image.xml'を3つの別々のファイルとして持っています。あなたの 'LinearLayout'、' TextView'、そしてあなたの 'ImageView'を保持している1つのファイル(おそらくまだ' widget_item.xml'と名付けられています)にそれらを結合してください。他の2つのレイアウトファイルを削除します。 Javaコード内の他の2つのファイルを参照している場所を削除します。 – CommonsWare

+0

しかし、それぞれのビューでテキストとイメージを設定するにはどうすればよいですか? –

関連する問題