私はAndroidの初心者で、ヘッドラインとスニペットを30秒間表示するニュースウィジェットを作成しようとしています。その後、別の見出しとスニペットに変更します。ウィジェットにこれを連続ループで実行させたい。これまでのところ、最初の見出しとスニペットしか表示できませんでした。30秒ごとにalarmManagerを呼び出さずにテキストを変更するにはどうすればよいですか?どんな助けでも大歓迎です。
私のコード
public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget1);
String tickerheadline="testing";
String tickerstory="testing";
for (int i = 0; i < RssReader.rssheadline.size(); i++) {
tickerheadline = RssReader.rssheadline.get(RssReader.rssheadline.size()-(i+1));
tickerstory = RssReader.rssstory.get(RssReader.rssheadline.size()-(i+1));
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {}
}, 30000);
}
updateViews.setTextViewText(R.id.headline, tickerheadline );
updateViews.setTextViewText(R.id.story, tickerstory );
appWidgetManager.updateAppWidget(appWidgetId, updateViews);
}
編集
public static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager, final int appWidgetId) {
final RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget1);
new Thread(new Runnable() {
public void run() {
tickerheadline="testing";
tickerstory="testing";
for (int i = 0; i < RssReader.rssheadline.size(); i++) {
tickerheadline = RssReader.rssheadline.get(RssReader.rssheadline.size()-(i+1));
tickerstory = RssReader.rssstory.get(RssReader.rssheadline.size()-(i+1));
context.runOnUiThread(action); //action cannot be resolved as variable
SystemClock.sleep(30000);
}
}
}).start();
Runnable action = new Runnable() {
public void run() {
updateViews.setTextViewText(R.id.headline, tickerheadline );
updateViews.setTextViewText(R.id.story, tickerstory );
appWidgetManager.updateAppWidget(appWidgetId, updateViews);
}
};
} }