1

ここで十分な情報を提供していない場合はお詫びします。私は android/java を初めて使用し、さまざまなサンプル プロジェクトの要素を組み合わせて学習しています。

VerticalGridFragmentアルバムのカバー アートと詳細を列と行に読み込む Android TV プロジェクト (leanback を使用)の作業ページがあります。github の googlesamples の例から大いに借りています。

次の形式のテストmusic_database_proto.jsonファイルを使用します。

{
  "cards": [
    {
      "type": "GRID_SQUARE",
      "title": "Around the World in a Day",
      "artist": "Prince and the Revolution",
      "description": "Prince and the Revolution",
      "groupType": 0,
      "tagID": 0,
      "localImageResource": "food_01"
    }
}

createRows()次に、 (同じサンプル プロジェクトの) 関数を使用して、次を使用してこれをロードできます。

PresenterSelector cardPresenterSelector = new CardPresenterSelector(getActivity());
mAdapter = new ArrayObjectAdapter(cardPresenterSelector);
String json = Utils.inputStreamToString(getResources().
    openRawResource(R.raw.music_database_proto));
CardRow row = new Gson().fromJson(json, CardRow.class);
mAdapter.addAll(0, row.getCards());

この例では、 CardRow.classCard.class、およびそれらのさまざまなサポート クラスのサンプル プロジェクト クラスを使用します。

SQLite正常に開始されるデータベースを実装し、 Android Studio のログでさまざまな結果を呼び出すことができます。ファイルの機能を置き換えて、データベースCardsにロードできるので、データベースから結果を挿入することをどこから始めればよいかわかりません。VerticalGridFragmentjson

データベースの結果から を作成し、これをusingList<Card>に追加するのと同じくらい簡単だと思いました。ただし、反復コードを使用してofオブジェクトを実装することはほとんどできませんでした。必死になって、データベースの結果を文字列に変換して、上に示した既存のコードに入力する必要があると思いましたか?mAdaptermAdapter.addAllListCardjson

どんな助けでも感謝します。データベースは、json 変数の再作成と同じくらい基本的なものであり、それに合わせて調整できます。

4

2 に答える 2

1

Realm for Androidが最適です。

使いやすくSQLite よりも高速です。そして、作業を開始するために必要なコードはわずか数行です。チェックアウトしてください。私は最近、レルムに恋をした後、レルムのエバンジェリスト (公式ではありません) に選ばれました。流暢なインターフェースベースのクエリを使用することだけが後退であり、クエリが複雑すぎる場合にのみ発生します。

于 2016-07-06T16:29:55.217 に答える
1

とはどういう意味However, I've had little luck in implementing a List of Card objects using iterating code.ですか? mAdapter.addAll(0, cards)カードのリストを呼び出している場合は、希望どおりに機能するはずです。

SQLite データベースからカードのリストを抽出するのに苦労していませんか? 次の回答があるこのリンクに頼ることができます。程度になるように少し修正しましたCard.classCardまた、オブジェクトを初期化するために使用すると想定して提供されているため、コンストラクターをオブジェクトに追加する必要があります@SerializedName。以下の例は、次のようなコンストラクターを追加したことを前提としていますpublic Card(String title, String description)

List<Card> cardsList = new ArrayList<Card>();
database = openOrCreateDatabase("your_db", SQLiteDatabase.OPEN_READWRITE, null);
if(database!=null)
{
    c= database.rawQuery(QUERY, null);
    c.moveToFirst();
    while(c.isAfterLast()==false)
    {
        Card card = new Card(c.getString(c.getColumnIndex("title")),
                             c.getString(c.getColumnIndex("description")));
        cardsList.add(card);
        c.moveToNext();
    }

}
database.close();
c.close();

この例は実際には開始点にすぎませんが、ニーズに合わせてサンプル内のクラスをカスタマイズすることをお勧めします。

また、SQLite は Android (および一般的なモバイル開発) の一部であり、慣れておくとよいので、SQLite を学ぼうとしている点も気に入っています。また、 Stetho by Facebookのようなライブラリを使用して、SQLite テーブルに実際に正しいデータが含まれていることを確認することもできます。これにより、デバッグが少し簡単になります。

于 2016-07-06T19:00:46.560 に答える