0

こんにちは、ArrayAdapter を拡張するカスタム クラスがあります。アダプターの作成時に提供されるListオブジェクト データに従って、 ImageButtonの背景イメージを変更できるようにしたいと考えています。私の質問は、次のアプローチのどちらが優れているかです。

例えば:

1.レイアウトに単一の ImageButton ビューを配置し、setBackgroundResourceを使用して条件付きで ImageButton を変更する

public View getView(int position, View convertView, ViewGroup parent){ ....

    if (myObject.getParent().equalsIgnoreCase("mom")){
        holder.button.setBackgroundResource(R.drawable.button_a);
    }else if(myObject.getParent().equalsIgnoreCase("dad")){
        holder.button.setBackgroundResource(R.drawable.button_b);
    }
      ....
}

2.レイアウトに2つのImageButtonビューがあり、表示するIm​​ageButtonの可視性を変更するだけです

@Override
public View getView(int position, View convertView, ViewGroup parent) {
     ....
   if (myObject.getParent().equalsIgnoreCase("mom")){
      holder.buttonA.setVisibility(View.VISIBLE);
      holder.buttonB.setVisibility(View.GONE);
   }else if(myObject.getParent().equalsIgnoreCase("dad")){
      holder.buttonB.setVisibility(View.VISIBLE);
      holder.buttonA.setVisibility(View.GONE);
   }
     ....
}

3.このようなカスタムImageButton クラスを持つ

public class CustomButton extends ImageButton {
  public CustomButton(Context context) {
      super(context);
      // TODO Auto-generated constructor stub
      setForMom();
  }
  public CustomButton(Context context, AttributeSet attrs,
          int defStyle) {
      super(context, attrs, defStyle);
      // TODO Auto-generated constructor stub
  }

  public CustomButton(Context context, AttributeSet attrs) {
      super(context, attrs);
      // TODO Auto-generated constructor stub
  }
  public void setForMom(){
      setBackgroundResource(R.drawable.button_a);
  }
  public void setForDad(){
      setBackgroundResource(R.drawable.button_b);
  }
  public void hide() {
      this.setVisibility(View.GONE);      
  }

}

私は次のような記事を読んだことがあります。

  1. ビューが小さいほど良いです。(これは、カスタム ビュー クラスを使用することを意味する可能性があります)
  2. getView() 内の画像設定は、Android システムに多くの作業を引き起こします
  3. また、カスタムビューの方が優れているため、常にカスタムビューを使用するというものもあります

3つすべて試してみましたが、それでも同じパフォーマンスを持っているようです。何かを見逃している可能性がありますか、パフォーマンスを向上させるためにこれを行うより良い方法はありますか?

ところで: 私はhttps://github.com/huewu/PinterestLikeAdapterViewを使用しています。私のアプリの表示は pinterest のようです。クリックすると変更する画像、テキスト、および ImageButton (つまり、クリックすると背景を変更する画像ボタン) が表示されます。また、ビューのリサイクル方法も使用していますが、ここでは表示しませんでした..

4

3 に答える 3