2012-04-26 15 views
0

私はアンドロイド開発の初心者です。私は私の学校プロジェクトのためにこのアプリに取り組んできました。アプリは、基本的に家電製品のエネルギー消費のコストを計算する計算機です。私の画面では、viewFlipperに家電製品のimageViewsがたくさんあるので、ユーザーは画像をナビゲートして、計算したいアプライアンスを選択することができます。私の質問は、これらのimageViewsに効率的な方法で整数値(アプライアンスのワットや仕様など)を割り当てる方法です。アプリケーションは選択したイメージに基づいてエネルギー消費量を計算できますか?私は条件文を使用していますが、あまりにも多くのコーディングであると思われ、私は40以上の画像ビューを持っているので、メモリを無駄にします。 SQLデータベースを使用して、アプライアンスのすべての仕様と写真をテーブルに入れて、ユーザーがそれを選択するか、アレイやリストなどのXMLで何かを作成する方法がある場合は、そこから呼び出す必要がありますか?ImageViewに値を割り当てる

答えて

2

ImageViewを拡張するクラスの作成を検討してください。その後、オブジェクトをカスタムクラスに渡すことができます。たとえば、カスタムImageViewクラスのコンストラクタにオブジェクト(すべてのエネルギー関連データを格納します)を渡すことができます。たとえば、

// The CustomView "IS-A" ImageView, so you can perform ImageView operations 
// on your custom object. You can even choose to override ImageView methods. 
public class CustomView extends ImageView { 
    Object myObj; 

    public CustomView(Context context, Object myObj) { 
     super(context); 
     this.myObj = myObj; 
    } 
} 

またはImageViewでタグを設定できます。

40個のImageViewで作業しますか?メモリ管理が正しく処理されないとOutOfMemoryErrorの問題が発生することがあります。注意してください!

+0

助けてくれてありがとう! – fozkul

2

あなたが閲覧

子ビューへの参照を格納するためにViewGroupsで使用 ViewHolderパターンに似て
Double energy = Double.valueOf(123.44); 
imageView.setTag(energy); 
... 
Double energy = (Double) imageView.getTag(); 

に独自の目的のためにオブジェクトを割り当てることができます。

+0

実際、投稿したものはViewHolderパターンではありません。 ViewHolderのポイントは、TextViewsやImageViewsなどのビューへの参照を格納することで、そのビューにバインドするたびにfindViewById(..)を行う必要がなくなります。したがって、 "VIEW"ホルダー。 – dymmeh

+0

あなたが投稿したものは、質問に答える正しい方法の1つです。それはちょうどビューホルダーではありません;) – dymmeh

+0

これはビューホルダーのパターンではありませんが、それは私に思い出させました:) – zapl