私はAndroidアプリケーション用のウィジェットを作成します(Javaではもちろん)。レイアウトから作成した古典的なRemoteViewを持っています(レイアウトIDを使用)どのように編集/変更するのですか?RemoteViewのレイアウトから見るか、ViewからRemoteViewを作成しますか?
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
ただし、RemoteViewではサポートされていません。 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);
第二に、より悪いオプション、)古いビューを削除し、addViewを(使用して処理新しいビューを追加し、それを処理、私の必要なビューフォームRemoteViewsを取得することです。
RemoteViews rv = ...
View my = ... //apply, find and process
//remove old view
RemoteViews rvMy = ... //create RemoteViews from View
rv.addView(rvMy)
しかし、ViewからRemoteViewを作成する方法はわかりません(可能ですか?)。どのようにこの問題を解決する任意のアイデアですか?ここで
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget);
remoteViews.setTextViewText(R.id.widget_textview, text); <---- here you can set text
// Tell the widget manager
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
は、ウィジェットの動作を理解するのに便利なポストである:
あなたの質問には少しの説明が必要だと思います。 IDを知らずにRemoteViewsビューのテキストを変更しようとしていますか? –