まず、私はこの質問をたくさん研究しました。私はassetsフォルダのテキストファイルから読み込む方法を学びました。問題は、ファイルが実際にjsonを使用して書かれたarraylistであり、arraylistがオブジェクトであるため、私は文字列で終わりたくないということです。 1つのオブジェクトにのみアクセスする必要があります。JSONを/ assetsフォルダからAndroidのArrayListに読み込みますか?
私は章と呼ばれるint、titleと呼ばれるint、およびpageNumというintを持つBookクラスを持っています。私はいくつかのブックオブジェクトを作成し、それらをArrayListに追加しました。その後、私は(通常のJavaプロジェクトでの)テキストファイルに私のArrayListを書くために、次のコードを使用:
ArrayList<Book> aList = new ArrayList<Book>();
aList.add(book1);
//etc...add more Book objects here...
File aFile = new File("books.txt");
FileOutputStream aFileStream = new FileOutputStream(aFile);
JSONOutputStream jsonOut = new JSONOutputStream(aFileStream);
jsonOut.writeObject(aList);
jsonOut.close();
このコードは、私はその後、私はので、私のAndroidのプロジェクトに/資産フォルダに入れたテキストファイルを作成しますそれはアプリに付属したい。私が使用している
File bFile = new File("books.txt");
FileInputStream bFileStream = new FileInputStream(bFile);
JSONInputStream jsonIn = new JSONInputStream(bFileStream);
Arraylist<Book> bList = (ArrayList<Book>) jsonIn.readObject();
Book aBook = bList.get(253); //some arbitrary index
JSONコードはquickconnectfamily.orgから来ている:私は、特定のインデックスからブックobectsを解析することができるように非AndroidのJavaプロジェクトでは、私は単にのArrayListを再作成するには、次のコードを使用することができます。 qc_json.jarというファイルをプロジェクトのビルドパスに追加する必要があります。 http://www.quickconnectfamily.org/qcjson/more.html
Androidの問題は、InputStreamを使用してファイルを読み込んだときにファイル全体を文字列にすることができます。上記のコードはAndroidでは動作しません。私はFileInputStreamの周りだけで、InputStreamの周りにJSONInputStreamsをラップすることはできません。しかし、私は FileInputStreamを使用することができないようです。
私が必要とするのは、Androidアプリで文字列ではなくArrayListを作成する方法です。 アプリについてあまりにも多くの情報を与えることなく、アプリは基本的に乱数を生成し、そのインデックスからBookListオブジェクトをArrayListに作成します。その後、ユーザーはその特定の本からの情報でクイズされます。愚かな音だが、実際のアプリははるかにクーラーです。
私は解決策、テキストファイルにオブジェクトを格納する代替方法などを公開しています。文法、構文、またはアプリケーションの考え方についての批判を投稿しないでください。私はアプリの開発にはかなり新しいので、私は個人的な意見についてはあまり気にすることができませんでした。もし誰かがもっと多くのコードを で見ることができたら、私はそれをアップロードすることができますが、この時点では必要ないようです。ありがとう。
Hmmmmは普通の 'InputStream'が有効である[docs状態](http://www.quickconnectfamily.org/qcjson/docs/org/quickconnect/json/JSONInputStream.html)のようです...もちろん、別のライブラリ(Jacksonなど)を使用することも、SQLite DBを使用することもできます。 – dmon
ファイルを文字列として読み込み、gsonを使用してファイルをオブジェクトに逆シリアル化することができます。 https://sites.google。com/site/gson/gson-user-guide#TOC-Collections-Examples –
私はJacksonを試しましたが、classCastExceptionを取得し続けました。しかし、助けをありがとう、私は実際に解決策を考え出し、私は答えとして投稿します。 –