Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 列表视图中的编辑文本值未更新_Android_Xml_List_View_Adapter - Fatal编程技术网

Android 列表视图中的编辑文本值未更新

Android 列表视图中的编辑文本值未更新,android,xml,list,view,adapter,Android,Xml,List,View,Adapter,我有一个自定义适配器,可以在列表视图中显示我的值(从服务器获取并使用XML解析) 列表视图行将具有文本框和编辑文本。 我的问题是 如果我想编辑编辑文本值和滚动列表视图,它会重复,并且在从编辑文本焦点提升后无法更新列表视图中的每一行 如何更新每行编辑文本 如何避免滚动时重复单元格值 代码如下: public View getView(int位置、视图转换视图、视图组父视图){ convertView=null; 最终int i=位置; 最终持票人; 最终行项目行项目=(行项目)getItem(位置

我有一个自定义适配器,可以在列表视图中显示我的值(从服务器获取并使用XML解析)

列表视图行将具有文本框和编辑文本。 我的问题是

如果我想编辑编辑文本值和滚动列表视图,它会重复,并且在从编辑文本焦点提升后无法更新列表视图中的每一行

  • 如何更新每行编辑文本
  • 如何避免滚动时重复单元格值
  • 代码如下:

    public View getView(int位置、视图转换视图、视图组父视图){
    convertView=null;
    最终int i=位置;
    最终持票人;
    最终行项目行项目=(行项目)getItem(位置);
    if(convertView==null){
    LayoutInflater mInflater=(LayoutInflater)上下文
    .getSystemService(活动.布局\充气机\服务);
    convertView=mInflater.充气(R.layout.category\u list\u edit,parent,false);
    holder=新的ViewHolder();
    holder.commodityName=(TextView)convertView.findViewById(R.id.commodityName);
    holder.id=(TextView)convertView.findViewById(R.id.vendorId);
    holder.unitValue=(TextView)convertView.findViewById(R.id.unitValue);
    holder.price=(EditText)convertView.findViewById(R.id.priceValue);
    convertView.setTag(支架);
    }
    其他的
    {
    holder=(ViewHolder)convertView.getTag();
    }
    holder.commodityName.setText(rowItem.getCommodityName());
    holder.price.setText(rowItem.getPrice());
    holder.unitValue.setText(rowItem.getQuantity());
    holder.id.setText(rowItem.getId());
    holder.price.setOnFocusChangeListener(新的OnFocusChangeListener(){
    public void onFocusChange(视图v,布尔hasFocus){
    如果(!hasFocus){
    最终编辑文本标题=(编辑文本)v;
    字符串值=Caption.getText().toString();
    final int primaryId=v.getId();
    filteredList.get(primaryId).setPrice(value);
    notifyDataSetChanged();
    }
    其他的
    {
    最终int位置=v.getId();
    最终编辑文本标题=(编辑文本)v;
    字符串值=Caption.getText().toString();
    }
    }
    });
    }
    
    可能是您应该使用
    notifyDataSetChanged()也在其他部分

    试试这个

    else
            {
    
                final int position = v.getId();
                final EditText Caption = (EditText) v;
                String value = Caption.getText().toString();
                notifyDataSetChanged();
    
            }
    

    在适配器类重写这两个方法时,它将防止列表项值在滚动时重复

      @Override
      public int getViewTypeCount() {
            return getCount();
      }
    
      @Override
      public int getItemViewType(int position) {
             return position;
      }
    

    为什么在从一个编辑文本更改为另一个编辑文本时使用SetOnFocusChangeListener来更新列表视图..在列表视图中从一个编辑文本移动到另一个编辑文本时更新列表视图不更新列表视图。编辑所需的edittext字段后,当我单击“确定”按钮时,它只接受旧列表。它不会更新列表视图。编辑完所需的编辑文本字段后,当我单击“确定”按钮时,它只接受旧列表。它不是自定义列表视图。编辑所需的编辑文本字段后,当我单击“确定”按钮时,它只接受旧的列表数据。请帮助分类\u编辑--editText字段。您正在尝试根据搜索关键字进行筛选??确定@pokerface当我获取id(v.getId)并设置值时,它会给出boudexception的Indexoutof。id值为21…….2333,依此类推。这一行给出了错误。filteredList.get(primaryId).setPrice(value)@拉胡尔·夏尔马,即使在那之后,问题仍然没有解决。编辑edittext值后,向下滚动和向上滚动表示旧值仅保留在那里。。如何解决?好的,试试这个。在getViewType Count()方法中,返回1代替getCount()@rahul no luck。。在我的代码中,我是否正确使用了position。。请告诉我。