适应器称为:
adapter = new MenuAdapter(thisActivity,R.layout.menu,List);setlistadapter(adapter);
我的自定义ArrayAdapter:
public MenuAdapter(Context context,int textVIEwResourceID,ArrayList<Object> menu) { super(context,textVIEwResourceID,menu); this.menu = menu; vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { VIEw v = convertVIEw; Object cat = menu.get(position); if (cat.getClass().equals(category.class)) { v = vi.inflate(R.layout.category,null); category item = (category)cat; v.setonClickListener(null); v.setonLongClickListener(null); v.setLongClickable(false); TextVIEw tt = (TextVIEw) v.findVIEwByID(R.ID.category); tt.setText(item.getname()); } else if (cat.getClass().equals(OrderItem.class)) { v = vi.inflate(R.layout.menu,null); OrderItem orderItem = (OrderItem)cat; Item item = orderItem.getItem(); TextVIEw tt = (TextVIEw) v.findVIEwByID(R.ID.Title); tt.setText(item.getname()); TextVIEw bt = (TextVIEw) v.findVIEwByID(R.ID.desc); bt.setText(item.getDescription()); TextVIEw qty = (TextVIEw) v.findVIEwByID(R.ID.qty); qty.setID(item.getID()); Imagebutton minus = (Imagebutton) v.findVIEwByID(R.ID.qtyMinus); minus.setTag(item); Imagebutton plus = (Imagebutton) v.findVIEwByID(R.ID.qtyPlus); plus.setTag(item); } return v; }
菜单布局:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="?androID:attr/ListPreferredItemHeight" androID:padding="6dip" androID:background="#FFFFFF"> <relativeLayout androID:orIEntation="vertical" androID:layout_wIDth="0dip" androID:layout_weight="1" androID:layout_height="fill_parent" androID:cachecolorHint="#FFFFFF" androID:background="#FFFFFF"> <TextVIEw androID:ID="@+ID/Title" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_weight="1" androID:gravity="center_vertical" androID:textSize="16px" androID:textcolor="#000000" /> <TextVIEw androID:ID="@+ID/desc" androID:layout_below="@ID/Title" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_weight="1" androID:textSize="11px" androID:textStyle="italic" androID:textcolor="#000000" /> </relativeLayout> <Imagebutton androID:ID="@+ID/qtyMinus" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:src="@drawable/minus" androID:paddingtop="15px" androID:onClick="minusQty" /> <TextVIEw androID:ID="@+ID/qty" androID:layout_wIDth="50px" androID:layout_height="50px" androID:textcolor="#000000" androID:textSize="18px" androID:gravity="center_vertical|center_horizontal" androID:freezesText="true" androID:background="@androID:drawable/editBox_background"/> <Imagebutton androID:ID="@+ID/qtyPlus" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:src="@drawable/plus" androID:paddingtop="15px" androID:onClick="addQty" /></linearLayout>
任何帮助将不胜感激.
非常感谢.
解决方法 当你注意到时,会多次调用getVIEw().它应该没关系,因为你的数组适配器是基于它的内部数据模型的状态(数组,对象列表,等等). getVIEw()应该是幂等的,因为多次调用它不应该改变结果.你说“当你滚动并且盒子离开屏幕时,值会消失”.注意肯定是什么意思.当您将getVIEw()中生成的其中一个视图从可见区域滚动时,当您向后滚动时,值是不同的?没有任何其他信息,我不得不说这是不可能的.原因是,除非您正在修改适配器的内部状态或更改适配器,否则您将始终为给定位置生成相同的视图.
顺便说一下,convertVIEw可以为null,所以你想做的事情,
VIEw v = convertVIEw;if (v == null) { v = inflater.inflate(...);}// Now use v in the rest of the method总结
以上是内存溢出为你收集整理的多次调用Android自定义ArrayAdapter getView方法 – 重置动态TextView值全部内容,希望文章能够帮你解决多次调用Android自定义ArrayAdapter getView方法 – 重置动态TextView值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)