Android listview控件在滚动时丢失值
当我稍微向下滚动listview并再次向上滚动时,已看不见的行将丢失值(edittext),请参见以下图像: [直接从htc m7智能手机拍摄的照片] 当我聚焦并显示键盘时,值会返回到它应该返回的状态 我不需要textwatcher,因为编辑的值来自我的静态数组 这是我的适配器:Android listview控件在滚动时丢失值,android,listview,adapter,Android,Listview,Adapter,当我稍微向下滚动listview并再次向上滚动时,已看不见的行将丢失值(edittext),请参见以下图像: [直接从htc m7智能手机拍摄的照片] 当我聚焦并显示键盘时,值会返回到它应该返回的状态 我不需要textwatcher,因为编辑的值来自我的静态数组 这是我的适配器: public class SearchableItemsAdapter extends BaseAdapter implements Filterable { ArrayList<MyInvoiceI
public class SearchableItemsAdapter extends BaseAdapter implements Filterable
{
ArrayList<MyInvoiceItems> filteredData = new ArrayList<MyInvoiceItems>();
MyInvoiceItems temp;
private ItemFilter mFilter;
private LayoutInflater mInflater;
//
public SearchableItemsAdapter(Context context, ArrayList<MyInvoiceItems> data) {
filteredData = data;
mInflater = LayoutInflater.from(context);
}
//
public int getCount() {
return filteredData.size();
}
//
public Object getItem(int position) {
return filteredData.get(position);
}
//
public long getItemId(int position) {
return position;
}
//
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolderItems itemsholder;
if(convertView==null)
{
convertView=mInflater.inflate(R.layout.lstcstmrinvoicepopupitems,parent,false);
itemsholder=new ViewHolderItems();
itemsholder.iTaken=(CheckBox) convertView.findViewById(R.id.inv_popupTaken);
itemsholder.iName=(TextView) convertView.findViewById(R.id.inv_popupName);
itemsholder.iQuan=(EditText) convertView.findViewById(R.id.inv_popupQuan);
itemsholder.iPrice=(EditText) convertView.findViewById(R.id.inv_popupPrice);
itemsholder.iTotal=(TextView) convertView.findViewById(R.id.inv_popupTotal);
convertView.setTag(itemsholder);
}
else
{
itemsholder=(ViewHolderItems) convertView.getTag();
}
if(filteredData!=null) {
itemsholder.iTaken.setChecked(false);
if (filteredData.get(position).getTaken() == 1)
itemsholder.iTaken.setChecked(true);
itemsholder.iName.setText(filteredData.get(position).getItem_desc());
itemsholder.iQuan.setText(filteredData.get(position).getItem_num().toString());
itemsholder.iPrice.setText(filteredData.get(position).getItem_cost().toString());
itemsholder.iTotal.setText(filteredData.get(position).getAmountTotal());
}
//---
return convertView;
}
//
public class ViewHolderItems {
CheckBox iTaken;
TextView iName;
EditText iQuan;
EditText iPrice;
TextView iTotal;
}
}
公共类SearchableItemsAdapter扩展BaseAdapter实现Filterable
{
ArrayList Filteredata=新的ArrayList();
MyInvoiceItems温度;
私有项目过滤器;
私人停车场;
//
公共SearchableItemsAdapter(上下文、ArrayList数据){
filteredData=数据;
mInflater=LayoutInflater.from(上下文);
}
//
public int getCount(){
返回filteredData.size();
}
//
公共对象getItem(int位置){
返回filteredData.get(位置);
}
//
公共长getItemId(int位置){
返回位置;
}
//
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终ViewHolderItemsHolder;
if(convertView==null)
{
convertView=mInflater.inflate(R.layout.lstcstmrinvoicepopupitems,父项,false);
itemsholder=newviewHolderItems();
itemsholder.iTaken=(复选框)convertView.findViewById(R.id.inv_poputaken);
itemsholder.iName=(TextView)convertView.findViewById(R.id.inv_popupName);
itemsholder.iQuan=(EditText)convertView.findViewById(R.id.inv_popupQuan);
itemsholder.iPrice=(EditText)convertView.findViewById(R.id.inv_popuprice);
itemsholder.iTotal=(TextView)convertView.findViewById(R.id.inv_popupttal);
setTag(itemsholder);
}
其他的
{
itemsholder=(ViewHolderItems)convertView.getTag();
}
如果(filteredData!=null){
itemsholder.iTaken.setChecked(false);
if(filteredData.get(position).getTaken()==1)
itemsholder.iTaken.setChecked(true);
itemsholder.iName.setText(filteredData.get(position.getItem_desc());
itemsholder.iQuan.setText(filteredData.get(position.getItem_num().toString());
itemsholder.iPrice.setText(filteredData.get(position.getItem_cost().toString());
itemsholder.iTotal.setText(filteredData.get(position.getAmountTotal());
}
//---
返回视图;
}
//
公共类ViewHolderItems{
伊塔肯;
TextView-iName;
编辑部;
编辑文本iPrice;
TextView iTotal;
}
}
顺便说一句,有人知道为什么有两个闪烁的光标(在数字5前后的第二张图片上)?经过两天的斗争,在互联网上搜索解决方案后,我认为我的代码有问题(可能是适配器)但实际上,这种行为的主要原因是.xml设计代表了我列表中的每一行,我为每个组件使用了一个表,在将其更改为RelativeLayout并将每个控件直接放在RelativeLayout上之后,我不相信.xml布局的设计会影响我的视图。但我从这个问题中学到了很多:——)