簡體   English   中英

Android:向 ListView App Widget 添加多個視圖

[英]Android: Add multiple views to ListView App Widget

我正在嘗試使用 3.1 SDK 創建一個主屏幕小部件。 我遵循了StackWidget教程。 並將StackView更改為ListView 我想向列表中的每一行添加圖像和文本,這些是在運行時加載的。

我在WidgetProvider.java class 中使用此代碼

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>

您可以通過從一開始就誇大正確的布局來糾正這一點。 R.layout.widget_image應該已經包含您在R.layout.widget_imageR.layout.widget_item中擁有的任何東西。

這將是:

  • 執行速度更快(實現相同視覺效果的指令更少)
  • 少 Java 碼
  • 更少的布局代碼(一個布局文件對三個)
  • 更易於維護布局代碼(您可以使用 Eclipse 中的可視化編輯器來更好地維護您的列表行)

而且,作為額外的獎勵,它應該適用於任何受支持的基於AdapterView的應用小部件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM