您好我有一个扩展 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 视图,只需更改要显示的 ImageButton的可见性
@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); } }
我在文章中读到以下内容:
- 视图越小越好。(这可能意味着去自定义视图类)
- getView() 中的图像设置为 Android 系统带来了很多工作
- 还有一个说总是选择自定义视图,因为它更好
我已经尝试了所有 3 个,但它们看起来仍然具有相同的性能。我可能错过了一些东西,或者有没有更好的方法来获得更好的性能?
顺便说一句:我正在使用https://github.com/huewu/PinterestLikeAdapterView,我的应用显示就像 pinterest。它显示图像、文本和单击后我想更改的 ImageButton(即单击后我想更改背景的图像按钮)。另外我也在使用视图回收的方法,我只是没有在这里展示它..