Android 滚动时,“编辑文本”将丢失列表视图中的内容

Android 滚动时,“编辑文本”将丢失列表视图中的内容,android,listview,android-edittext,Android,Listview,Android Edittext,我在列表视图中有多个编辑文本。编辑文本的数量不是固定的。当列表视图被滚动时,编辑文本将丢失其内容,或者焦点中的某些其他编辑文本将显示某些其他编辑文本的值。我已经尝试了针对堆栈溢出提供的解决方案,但没有任何帮助 我声明了一个散列映射,在其中存储位置和值,然后从散列映射中设置编辑文本中的文本,但在某个地方,散列映射正在覆盖以前存储的位置中的值 如果需要代码,请告诉我。我将用我的代码更新我的问题 用我尝试过的代码更新我的问题- public class JunkTabAdapter extends A

我在列表视图中有多个编辑文本。编辑文本的数量不是固定的。当列表视图被滚动时,编辑文本将丢失其内容,或者焦点中的某些其他编辑文本将显示某些其他编辑文本的值。我已经尝试了针对堆栈溢出提供的解决方案,但没有任何帮助

我声明了一个散列映射,在其中存储位置和值,然后从散列映射中设置编辑文本中的文本,但在某个地方,散列映射正在覆盖以前存储的位置中的值

如果需要代码,请告诉我。我将用我的代码更新我的问题

用我尝试过的代码更新我的问题-

public class JunkTabAdapter extends ArrayAdapter<JunkTabBean> {

    private Activity mContext;
    /* android.graphics.Typeface face; */
    private int listItemForFile;
    private static ArrayList<JunkTabBean> itemList = new ArrayList<JunkTabBean>();

    private ListView download_row;
    ImageLoader imageloader;
    long fileLength;
    String getImage, saveinternalImagePath;
    Bitmap getBitmapImage;
    HomeLoader hl;
    NewImageLoader img;
    String fromWhere;

    String value="";
    String qty="";
    List<Integer> totAmtList = new ArrayList<Integer>();
    JunkTab junkTab;
    public int totAmt=0;

    ViewHolder holder;

    Map<Integer,String>  map = new HashMap<Integer,String>();
    int count=0;
    public JunkTabAdapter(Activity context, int listItemForFile,
            ArrayList<JunkTabBean> itemList,String fromWhere,JunkTab junkTab) {
        super(context, listItemForFile, itemList);
        this.mContext = context;
        this.listItemForFile = listItemForFile;
        this.itemList = itemList;
        this.fromWhere=fromWhere;
        this.junkTab=junkTab;

        img=new NewImageLoader(context);
    }

    public int getCount() {
        return itemList.size();
    }

    public JunkTabBean getItem(JunkTabBean position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public class ViewHolder {

        public ImageView imgItem;
        public ImageView imgInfo;
        public ImageView imgDel;
        public EditText edQty;
        public TextView tvAmt;
        public TextView tvTotAmt;
        public View viewDivider;

        int reference;

    }
    // create a new ImageView for each item referenced by the Adapter
    public View getView(final int position, View convertView, ViewGroup parent) {



          View row = convertView; 

          if (row == null) {

                holder = new ViewHolder();

                LayoutInflater vi = (LayoutInflater)    
                        mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                row = vi.inflate(R.layout.junktabcomponent, null);

                holder = new ViewHolder();
                  holder.imgItem = (ImageView)row.findViewById(R.id.imgItem);
                  holder.imgDel = (ImageView)row.findViewById(R.id.imgDelete);
                  holder.imgInfo = (ImageView)row.findViewById(R.id.imgInfo);
                  holder. edQty = (EditText)row.findViewById(R.id.edQty); 
                  holder.tvAmt = (TextView)row.findViewById(R.id.tvAmt); 
                  holder.tvTotAmt = (TextView)row.findViewById(R.id.tvTotalAmt); 
                  holder.viewDivider = (View)row.findViewById(R.id.view1); 


                  row.setTag(holder);
                //  holder.edQty.setTag(itemList.get(position).getId());


            } else {

                holder = (ViewHolder) row.getTag();

            }


         /* LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
          row = inflater.inflate(R.layout.junktabcomponent,null, false);
          holder = new ViewHolder();
          holder.imgItem = (ImageView)row.findViewById(R.id.imgItem);
          holder.imgDel = (ImageView)row.findViewById(R.id.imgDelete);
          holder.imgInfo = (ImageView)row.findViewById(R.id.imgInfo);
          holder. edQty = (EditText)row.findViewById(R.id.edQty); 
          holder.tvAmt = (TextView)row.findViewById(R.id.tvAmt); 
          holder.tvTotAmt = (TextView)row.findViewById(R.id.tvTotalAmt); 
          holder.viewDivider = (View)row.findViewById(R.id.view1); */

         // holder.edQty.setText(qty);


          holder.edQty.setInputType(InputType.TYPE_CLASS_NUMBER);


              final JunkTabBean item = (JunkTabBean) itemList.get(position);


              img.DisplayImage(item.getImage(), holder.imgItem);
              holder.edQty.setHint(item.getUnits());

             // final int pos=(Integer) holder.edQty.getTag();

              if(map.containsKey(holder.reference))
              {
                  holder.edQty.setText(map.get(holder.reference).toString());
              }
              holder.edQty.addTextChangedListener(new TextWatcher()

              {

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    /*value=value+s;
                    Log.e("value",value);*/


                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable s) {
                    //map.put(pos,s.toString());

                    map.put(holder.reference,s.toString());

                    Log.e("map",""+map);
                    //holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize()) * Integer.parseInt(map.get(holder.reference))));
                    //holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize()) * Integer.parseInt(s.toString())));
                    /*totAmt=totAmt+(Integer.parseInt(item.getPrize()) * Integer.parseInt(s.toString()));
                    junkTab.setTotAmt(""+totAmt);*/
                    //qty=s.toString();

                }
            });

              holder.reference=position;
             // holder.edQty.setText(map.get(position));

              //  if(!map.get(position).contains(""))

              /*  if(!holder.edQty.getText().toString().equalsIgnoreCase(""))
              holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize())* Integer.parseInt(holder.edQty.getText().toString())));*/

          return row;

    }



 }
公共类JunkTabAdapter扩展了ArrayAdapter{
私人活动mContext;
/*android.graphics.Typeface*/
私有int-listItemForFile;
私有静态ArrayList itemList=新ArrayList();
私有ListView下载_行;
图像加载器;
长文件长度;
字符串getImage,saveinternalImagePath;
位图getBitmapImage;
HomeLoader hl;
新图像加载器img;
从何处开始的字符串;
字符串值=”;
字符串数量=”;
List totAmtList=new ArrayList();
JunkTab JunkTab;
公共整数总和=0;
视窗座;
Map Map=newhashmap();
整数计数=0;
公共JunkTabAdapter(活动上下文,int listItemForFile,
ArrayList项列表,字符串fromWhere,JunkTab(JunkTab){
super(上下文、listItemForFile、itemList);
this.mContext=上下文;
this.listItemForFile=listItemForFile;
this.itemList=itemList;
this.fromWhere=fromWhere;
this.junkTab=junkTab;
img=新的NewImageLoader(上下文);
}
public int getCount(){
返回itemList.size();
}
公共Junktabean getItem(Junktabean位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共类视图持有者{
公共图像视图imgItem;
公共图像视图imgInfo;
公共图像视图imgDel;
公共编辑文本数量;
公共文本视图tvAmt;
公共文本视图tvtotam;
公众视野分隔器;
内参;
}
//为适配器引用的每个项目创建新的ImageView
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图行=转换视图;
if(行==null){
holder=新的ViewHolder();
LayoutInflater vi=(LayoutInflater)
mContext.getSystemService(Context.LAYOUT\u充气机\u服务);
行=vi.充气(R.layout.junktabcomponent,空);
holder=新的ViewHolder();
holder.imgItem=(ImageView)row.findViewById(R.id.imgItem);
holder.imgDel=(ImageView)row.findViewById(R.id.imgDelete);
holder.imgInfo=(ImageView)row.findViewById(R.id.imgInfo);
holder.edQty=(EditText)行findViewById(R.id.edQty);
holder.tvAmt=(TextView)row.findViewById(R.id.tvAmt);
holder.tvToTam=(TextView)row.findViewById(R.id.tvTotalAmt);
holder.viewDivider=(视图)row.findViewById(R.id.view1);
row.setTag(支架);
//holder.edQty.setTag(itemList.get(position.getId());
}否则{
holder=(ViewHolder)row.getTag();
}
/*LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Service.LAYOUT\u充气器\u服务);
row=充气机。充气(R.layout.junktabcomponent,null,false);
holder=新的ViewHolder();
holder.imgItem=(ImageView)row.findViewById(R.id.imgItem);
holder.imgDel=(ImageView)row.findViewById(R.id.imgDelete);
holder.imgInfo=(ImageView)row.findViewById(R.id.imgInfo);
holder.edQty=(EditText)行findViewById(R.id.edQty);
holder.tvAmt=(TextView)row.findViewById(R.id.tvAmt);
holder.tvToTam=(TextView)row.findViewById(R.id.tvTotalAmt);
holder.viewDivider=(视图)row.findViewById(R.id.view1)*/
//支架edQty SETEXT(数量);
持有者.edQty.setInputType(输入类型.类型\类别\编号);
最终的junktabean项=(junktabean)itemList.get(position);
DisplayImage(item.getImage(),holder.imgItem);
holder.edQty.setHint(item.getUnits());
//final int pos=(整数)holder.edQty.getTag();
if(地图容器(持有人参考))
{
holder.edQty.setText(map.get(holder.reference.toString());
}
holder.edQty.addTextChangedListener(新的TextWatcher()
{
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
/*值=值+s;
Log.e(“值”,值)*/
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
//map.put(pos,s.toString());
map.put(holder.reference,s.toString());
Log.e(“地图”,“地图+地图”);
//holder.tvmt.setText(“+(Integer.parseInt(item.getPrize())*Integer.parseInt(map.get(holder.reference)));
//holder.tvmt.setText(“+(Integer.parseInt(item.getPrize())*Integer.parseInt(s.toString())));
/*totam=totam+(Integer.parseInt(item.getPrize())*Integer.parseInt(s.toString());
junkTab.settotam(“+totam”)*/
//数量=s.toString();
}
});
支架。参考=位置;
private class MyViewHolder {
  public EditText myEditText;
  public ViewGroup myListItemLayout;
}
public View getView(int position, View convertView, ViewGroup parent) {

  MyViewHolder holder = new ViewHolder(); 

  // Get the data object for this row.
  MyDataItem item = items.get(position);

  // If we receive a null View we need to construct a one.
  if (convertView == null) {
    convertView = inflater.inflate(R.layout.my_list_item, parent, false);

    // Store the UI elements in the View Holder.
    holder.myEditText = (EditText)view.findViewById(R.id.editTextMyEditText);
    holder.myListItemLayout = (ViewGroup)view.findViewById(R.id.layoutMyListItemLayout);

    // Strore the View Holder as the View's tag.
    convertView.setTag(holder);
  }

  // Get the holder from the View's tag. 
  holder = (ViewHolder) convertView.getTag();

  ...
}
holder = (ViewHolder) convertView.getTag();