アプリケーションのウィジェットを作成しています。github から LoremWidget プロジェクトをダウンロードしました。リンクはこちら
ここでは、items という名前の 1 つの配列です。配列をハードコーディングすると、ウィジェットに値が正しく表示されます。しかし、データベースからデータを取得しようとして、データを要素ごとに配列にコピーしても何も表示されません。私はマニフェストファイルへの書き込みと読み取りの許可を与えました.誰かが私のエラーを見つけることができますか. しかし、私はこのデータベースコードを別のアプリケーション(ウィジェットではない)に使用して、正しく取得しました。
LoremViewsFactory.java
public class LoremViewsFactory extends Activity implements RemoteViewsService.RemoteViewsFactory
{
public String[] items = new String[10];
private Context ctxt = null;
private int appWidgetId;
public LoremViewsFactory(Context ctxt, Intent intent) {
int i = 0;
DatabaseHandler db = new DatabaseHandler(LoremViewsFactory);
List < Contact > contacts = db.getAllContacts();
for (Contact cn: contacts) {
String log = cn.getURL();
Toast.makeText(LoremViewsFactory.this, log, Toast.LENGTH_LONG).show();
items[i] = log;
i++;
}
this.ctxt = ctxt;
appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
これは私の getAllContactsfunction DatabseHandler クラスです
public List < Contact > getAllContacts() {
List < Contact > contactList = new ArrayList < Contact > ();
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setURL(cursor.getString(0));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
return contactList;
}
}