0

私は動的リモートビューをほとんどあきらめましたが、onUpdate メソッドでそれぞれに 3 ~ 4 つのメソッド呼び出しがある約 20 のリモートビューがまだあります。問題は、ループの RemoteViews subView id にイテレータを設定できるかどうかです。

編集 OK、コードは次のとおりです。R クラスが R.id を生成するため、bookmarkcounter を反復子として使用してみました。widget * * (1 ずつ) 増加する数値として。しかし、うまくいきません。

    @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    Cursor cursor;
    String SORT_BY_COLUMN = Constants.SORT_BY_COLUMN;
    String SORT_ORDER = Constants.SORT_ORDER;
    int bookmarkIdCounter = R.id.widget_bookmark_1;
    Bitmap bitmap;

    HashMap<Integer, String> urls = new HashMap<Integer, String>();

    ComponentName thisWidget = new ComponentName(context, WidgetProvider.class);

    RemoteViews updateViews = new RemoteViews(
            context.getPackageName(), R.layout.widget_main);
    RemoteViews bookmarks = new RemoteViews(
            context.getPackageName(), R.layout.widget_bookmarks);;

        cursor = context.getContentResolver().query(
                Browser.BOOKMARKS_URI, Constants.projection, Constants.selection, 
                null, SORT_BY_COLUMN + " " + SORT_ORDER);

        if(cursor.moveToFirst()) {
            ByteArrayInputStream blobImage;

            do{

               blobImage = new ByteArrayInputStream(
                       cursor.getBlob(cursor.getColumnIndex(BookmarkColumns.FAVICON)));

               bitmap = BitmapFactory.decodeStream(blobImage);
               bitmap = Bitmap.createScaledBitmap(
                       bitmap, Constants.FAVICON_SIZE, Constants.FAVICON_SIZE, false);
               bookmarks.setImageViewBitmap(bookmarkIdCounter, bitmap);

               bookmarks.setInt(bookmarkIdCounter, "setBackgroundColor", Color.WHITE);

               urls.put(bookmarkIdCounter,
                       cursor.getString(
                                cursor.getColumnIndex(BookmarkColumns.URL)));
               bookmarkIdCounter++;
            } while (cursor.moveToNext() && (bookmarkIdCounter < 2));
         }
        updateViews.addView(R.id.widget_main_container, bookmarks);
        cursor.deactivate();
        appWidgetManager.updateAppWidget(thisWidget, updateViews);
}
4

1 に答える 1

3

RemoteViewsはビューではなく、ビューが含まれていません。

ビューを「記述」し、他のプロセスで作成する方法です。基本的には、ビューを構築するために実行する必要がある一連のアクションです。

内部にビューがないため、サブビューのリストを取得/反復する方法はありません。

于 2011-02-26T18:27:00.503 に答える