10

Android アプリケーション用のウィジェットを作成します (もちろん Java で)。レイアウトから作成された従来の RemoteView があります (レイアウト ID を使用)

RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.view);

ビューを編集または変更する必要があります(IDで識別)。クラシック ビューでは、findViewById 関数を使用すると簡単です。

View v = ... //inflate layout R.layout.view
View my = v.findViewById(R.id.myViewId);
processView(my); //filling view

ただし、RemoteViews ではサポートされていません。apply() を使用してビューを取得することは可能ですが、processView と reapply() の後、ビューに変更が表示されません。

View v = rv.apply(context, null);
View my = v.findViewById(R.id.myViewId);
processView(my); //this work's fine
rv.reapply(context,my);

2 つ目の最悪のオプションは、RemoteViews から必要なビューを取得して処理し、古いビューを削除して、addView() を使用して処理済みの新しいビューを追加することです。

RemoteViews rv = ...
View my = ... //apply, find and process
//remove old view
RemoteViews rvMy = ... //create RemoteViews from View
rv.addView(rvMy)

しかし、View から RemoteViews を作成する方法がわかりません (可能ですか?)。この問題を解決する方法はありますか?

4

2 に答える 2