2016-08-14 7 views
0

私はサイドバーアプリケーションを開発しました。私が今使っているアプローチは、すべてのアプリケーションを取得し、ユーザーに自分のfavアプリケーションを選択させることです。今度は、これらの選択したアプリケーションのpackageNamesをsharedPreferencesのSetとして保存し、サイドバーが起動されるたびに、インストールされているすべてのアプリケーションのリストが取得され、保存されたセット内のpackageNamesを調べることによって選択したアプリケーションのリストを表示します。それはまたカスタムアイコンパックの統合を持っているので、各アプリケーションのResolveInfo、ラベル、アイコンを格納するカスタムオブジェクトを作成し、これらのオブジェクトのリストがアダプタに渡されます。アンドロイドにカスタムオブジェクト(ドロウアブルを含む)のリストを保存するにはどうすればいいですか?

私はショートカット機能も実装したかったのです。だから、私が使用しようと考えていたアプローチは、カスタムオブジェクトのリストを直接保存し、すべてのアプリケーションリストから毎回リストを取得しなくても、それらを取得することでした。どこかに保存して、私の以前のアプローチから検索できないように直接検索してください。

カスタムオブジェクトは、次のようになります。

public class MyAppInfo { 

    public ResolveInfo info; 

    public String label; 

    public Drawable icon; 

    public MyAppInfo() { 
    } 

    public MyAppInfo(ResolveInfo info, String label, Drawable icon) { 
     this.info = info; 
     this.label = label; 
     this.icon = icon; 
    } 
} 

私はカスタムオブジェクトのリストを保存する方法に見てきたと私はJSON、フラットファイル、およびMySQLデータベースを使用してこれを行うことができますことを発見しました。

私はJSON配列を試しました。しかし、それはちょうどリストを保存して後でそれがメモリと他の時間を示したスタックに固執して、アプリはちょうどクラッシュした。私もそれをファイルに保存しようとしましたが、それを取得しようとするとデータが常にnullであるため、私のために働いていないようです。 DrawableをSQLに保存する方法がわからないので、私はSQLメソッドを試していません。

誰か助けてもらえますか?私の場合、データを保存する最良の方法は何でしょうか?

ありがとうございます!

答えて

0

私が推測しているのは、あなたが参照している他のアプリのアイコンと、ドロワーブルです。

もしそうなら、JSON配列またはフラットファイルを使用しないでください。あなたはデータベースを使用する必要があります。そして、ちょうどFYI、MySQLはAndroidで利用できません、我々はSQLiteを使用しています。

データベース内のすべての通常のデータを文字列、int、ブール値などとして保存してから、ドロワブルをBLOBS(基本的に生のイメージデータ)として保存する必要があります。

実際のデータベースの実装とBLOBとしてのドロワーブルの格納に役立つ多数のガイド/スタックオーバーフローポストがあります。

+0

ありがとうございました!そして、申し訳ありませんが、私はSQLを使ったことがないので、それがMySQLだと思ったのは本当にわかりません。とにかくあなたの方法を試してみましょう。私はアプリでアイコンパックを使用し、ユーザーはアプリごとにアイコンを格納できるので、ドロアブルが使用されます。私は良いガイドのためにstackoverflowを見回しますが、あなたがガイドを知っていれば、リンクが役に立つでしょう。ありがとう:) – Zeeshan

+0

ありがとうございました! SQLiteは素晴らしいです。パフォーマンスはこれまでよりも大幅に向上しています。 – Zeeshan

関連する問題