如何在android中使用cursor.movetonext()更新主屏幕小部件?

时间:2017-01-07 14:00:21

标签: java android xml

我在Android应用中创建了一个小部件。我连接到数据库并获取一些列值。我希望每10秒更新一次这个小部件,并从我的数据库中获取下一个值。 我想用cursor.movetonext()来做,但我不知道如何在这里使用它。

这是我的小部件java类:

public class DataAppWidget extends AppWidgetProvider {

    private String dataP;
    private String dataE;
    private dataRepo dataRepo;
    private Cursor cursor;


    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.data_app_widget);
            dataRepo = new dataRepo(context.getApplicationContext());

                cursor = dataRepo.getallData();
                dataP = cursor.getString(cursor.getColumnIndex(data_P.KEY_P_NAME));
                dataE = cursor.getString(cursor.getColumnIndex(data_E.KEY_E_NAME));
                views.setTextViewText(R.id.appwidget_p, dataP);
                views.setTextViewText(R.id.appwidget_e, dataE);
                appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }

}

这是我的小部件信息xml:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialKeyguardLayout="@layout/data_app_widget"
    android:initialLayout="@layout/data_app_widget"
    android:minHeight="40dp"
    android:minWidth="180dp"
    android:previewImage="@drawable/data_appwidget_preview"
    android:resizeMode="horizontal|vertical"
    android:updatePeriodMillis="10000"
    android:widgetCategory="home_screen"></appwidget-provider>

1 个答案:

答案 0 :(得分:0)

好的,我解决了我的问题。

我创建了新的首选项,然后使用SharedPreference我存储了计数。

然后,每次更新小部件时,我从SharedPreference获取我的号码,然后使用cursor.move(mynumber),之后我将mynu​​mber值设置为+1并再次存储。