Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 滚动时丢失edittext值的Listview_Android_Listview_Android Edittext_Adapter - Fatal编程技术网

Android 滚动时丢失edittext值的Listview

Android 滚动时丢失edittext值的Listview,android,listview,android-edittext,adapter,Android,Listview,Android Edittext,Adapter,我不擅长android listview和Edittext。然而,关于这个问题,我遇到了一些恼人的问题。我在列表视图中获取值没有任何问题,但当我在编辑文本中输入内容并向下滚动时,编辑文本的值会改变其位置。这是我的密码。 //产品类别 public class products { public String prod_sl; public String prod_code; public String product_name; public String pro

我不擅长android listview和Edittext。然而,关于这个问题,我遇到了一些恼人的问题。我在列表视图中获取值没有任何问题,但当我在编辑文本中输入内容并向下滚动时,编辑文本的值会改变其位置。这是我的密码。 //产品类别

public class products {
    public String prod_sl;
    public String prod_code;
    public String product_name;
    public String product_desc;
    public String prod_qnty;
    public String prod_uom;
    public String prod_price;
    boolean ShowName;
    public products(String psl, String pcode,String Name, String Desc, String UOM) {
        this.prod_sl = psl;
        prod_code = pcode;
        prod_qnty="";
        prod_price ="";
        product_name=Name;
        product_desc=Desc;
        prod_uom =UOM;
    }
   /* public boolean isShowName() {
        return ShowName;
    }
    public void setShowName(boolean showName) {
        ShowName = showName;
    }*/
    //sl
    public String getSl() {         return prod_sl;     }
    public void setSl(String psl) {         this.prod_sl = psl;     }
//product code
    public String getCode() {         return prod_code;     }
    public void setCode(String pcode) {         this.prod_code = pcode;     }
    //product Name
    public String getName() {         return product_name;     }
    public void setName(String product_name) {         this.product_name = product_name;     }
    //product desc
    public String getDesc() {         return product_desc;     }
    public void setDesc(String product_desc) {         this.product_desc = product_desc;     }
    //product UOM
    public String getUom() {         return prod_uom;     }
    public void setUom(String prod_uom) {         this.prod_uom = prod_uom;     }
    // product quantity

    public String getQnty() {
        return prod_qnty;     }
    public void setQnty(String prod_qnty) {
        this.prod_qnty = prod_qnty;     }
//product price
    public String getPrice() {
        return prod_price;     }
    public void setPrice(String prod_price) {
        this.prod_price = prod_price;     }

}
下面是适配器类

public class ListViewAdapter extends ArrayAdapter<products> {

    Context mContext;
    View v;
    private String[] arrTemp;
    LayoutInflater inflater;

    ArrayList<products> arrayproducts;
    public   String[] scoresToUpdate=new String[1000];
    //public String Array scoresToUpdate =scoresToUpdate[];
    public static EditText edit_qnty,prod_price;
    public static HashMap<Integer,String> myList=new HashMap<Integer,String>();
    public ListViewAdapter(Context context, int resource, ArrayList<products> arrayproducts) {
        super(context, resource);
        this.mContext = context;
        this.arrayproducts = arrayproducts;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    @Override

    public View getView(final int position, View convertView, ViewGroup parent) {
        try {

            final int pos=position;
            final ViewHolder holder;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.list_adapter_view, null);
                holder = new ViewHolder();
                holder.prod_sl = (TextView) convertView.findViewById(R.id.prod_sl);
                holder.prod_code = (TextView) convertView.findViewById(R.id.prod_code);
                holder.txtTitle = (TextView) convertView.findViewById(R.id.adapter_text_title);
                holder.txtDescription = (TextView) convertView.findViewById(R.id.adapter_text_description);
                holder.prod_uom = (TextView) convertView.findViewById(R.id.prod_uom);
                holder.prod_qnty = (EditText) convertView.findViewById(R.id.prod_qnty);
                holder.prod_price = (EditText) convertView.findViewById(R.id.prod_price);
               // edit_qnty = (EditText) convertView.findViewById(R.id.prod_qnty);


                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
              //  holder.prod_qnty.setText(scoresToUpdate[pos]);
            }
                holder.ref = position;

                products prod = arrayproducts.get(position);
                holder.prod_sl.setText("" + position);
                holder.prod_code.setText(prod.getCode());
                holder.txtTitle.setText(prod.getName());
                holder.txtDescription.setText(prod.getDesc());
                holder.prod_uom.setText(prod.getUom());
                Log.e("row values",""+position+"\t-"+prod.getCode()+""+prod.getName()+""+prod.getDesc()+""+prod.getUom());
               // holder.prod_qnty.setText(arrTemp[position]);

                 holder.prod_qnty.setText(scoresToUpdate[position]);
                holder.prod_qnty.addTextChangedListener(new TextWatcher() {

                    @Override
                    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                        // TODO Auto-generated method stub
                        arrayproducts.get(pos).setQnty(holder.prod_qnty.getText().toString().trim());
                        myList.put(pos,arg0.toString().trim());
                        if (!arg0.equals("0")){
                        scoresToUpdate[pos] = arg0.toString();
                            Log.e("On text Change","Pos"+pos+"\tqnty:"+holder.prod_qnty.getText().toString().trim()+"\t Args: "+arg0.toString());
                        }
                    }

                    @Override
                    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                                  int arg3) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void afterTextChanged(Editable arg0) {
                        // TODO Auto-generated method stub
                        Log.e("After Text change","Pos"+holder.ref+"\tqnty:"+holder.prod_qnty.getText().toString().trim());
                       // arrTemp[holder.ref] = arg0.toString();

                    }
                });
            //holder.prod_qnty.setText(myList.get(position));

                holder.prod_qnty.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub

                    Log.e("Current Qnty",edit_qnty.getText().toString().trim());
                    if(holder.prod_qnty.getText().toString().trim().equals("0")){

                        holder.prod_qnty.setText("");
                    }
                    String inttext = (""+holder.prod_qnty.getText().toString().trim());

                    if (!inttext.equals("0")){
                        holder.prod_price.setText("");
                    }

                    return false;
                    //return true;
                }
            });



            //Using setOnclickListener not setOnCheckedChangeListener
            //we need to update adapter once we finish with editing

            /* holder.prod_qnty.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            public void onFocusChange(View v, boolean hasFocus) {

                if (!hasFocus) {
                final int pos = v.getId();
                final EditText Qnty = (EditText) v;
                Log.e("Qnty For the positon","POS: "+pos+"\tQnty: "+Qnty.getText().toString().trim());
                arrayproducts.get(pos).setQnty(Qnty.getText().toString().trim());
                //holder.prod_qnty.setText(Caption.getText().toString().trim());
                }

                }

            });*/
            /*  holder.prod_price.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            public void onFocusChange(View v, boolean hasFocus) {

                if (!hasFocus) {
                final int position = v.getId();
                final EditText Caption = (EditText) v;
                arrayproducts.get(position).setPrice(Caption.getText().toString().trim());
                }

            }

            });
*/
            return convertView;

        }
        catch(Exception e){
            Toast.makeText(mContext, "!!!", Toast.LENGTH_SHORT).show();
            e.printStackTrace();
            Log.e("Exception:",""+e.toString());
        }
        return convertView;
    }
/*    @Override

    public int getCount() {

        return arrayproducts.size();

    }*/

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        if(arrayproducts != null && arrayproducts.size() != 0){
            return arrayproducts.size();
        }
        return 0;
    }

    /*@Override
    public Objects getItem(int position) {
        // TODO Auto-generated method stub
        return arrayproducts[position];
    }*/

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }


    public void getQnty(){
        if(edit_qnty.getText().toString().trim().equals("0"))
        edit_qnty.setText("");

    }
    static class ViewHolder {
        TextView prod_sl;
        TextView prod_code;
        TextView txtTitle;
        TextView txtDescription;
        TextView prod_uom;
        EditText prod_qnty,prod_price;
        TextWatcher qtyWatcher;
        TextWatcher priceWatcher;
        int ref;
    }

}
公共类ListViewAdapter扩展了ArrayAdapter{
语境;
观点五;
私有字符串[]arrTemp;
充气机;
ArrayList arrayproducts;
公共字符串[]scoresToUpdate=新字符串[1000];
//公共字符串数组scoresToUpdate=scoresToUpdate[];
公共静态编辑文本编辑,产品价格;
public static HashMap myList=new HashMap();
公共ListViewAdapter(上下文上下文、int资源、ArrayList arrayproducts){
超级(上下文、资源);
this.mContext=上下文;
this.arrayproducts=arrayproducts;
this.inflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u inflater\u SERVICE);
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
试一试{
最终int pos=位置;
最终持票人;
if(convertView==null){
convertView=充气机。充气(R.layout.list\u adapter\u视图,空);
holder=新的ViewHolder();
holder.prod_sl=(TextView)convertView.findViewById(R.id.prod_sl);
holder.prod_代码=(TextView)convertView.findViewById(R.id.prod_代码);
holder.txtTitle=(TextView)convertView.findViewById(R.id.adapter\u text\u title);
holder.txtDescription=(TextView)convertView.findViewById(R.id.adapter\u text\u description);
holder.prod_uom=(TextView)convertView.findViewById(R.id.prod_uom);
holder.prod_qnty=(EditText)convertView.findViewById(R.id.prod_qnty);
holder.prod_price=(EditText)convertView.findViewById(R.id.prod_price);
//edit_qnty=(EditText)convertView.findViewById(R.id.prod_qnty);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
//holder.prod_qnty.setText(scoresToUpdate[pos]);
}
holder.ref=位置;
products prod=arrayproducts.get(位置);
固定器.产品设置文本(“+位置);
holder.prod_code.setText(prod.getCode());
holder.txtTitle.setText(prod.getName());
holder.txtDescription.setText(prod.getDesc());
holder.prod_uom.setText(prod.getUom());
Log.e(“行值”,“位置+”\t-“+prod.getCode()+”+prod.getName()+“+prod.getDesc()+”+prod.getUom());
//保持架产品设置文本(arrTemp[位置]);
holder.prod_qnty.setText(scoresToUpdate[位置]);
holder.prod_qnty.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、int arg3){
//TODO自动生成的方法存根
arrayproducts.get(pos).setQnty(holder.prod_qnty.getText().toString().trim());
myList.put(位置,arg0.toString().trim());
如果(!arg0.equals(“0”)){
scoresToUpdate[pos]=arg0.toString();
Log.e(“在文本更改时”,“Pos”+Pos+”\tqnty:“+holder.prod\u qnty.getText().toString().trim()+”\t Args:“+arg0.toString());
}
}
@凌驾
更改前的公共void(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
Log.e(“文本更改后”,“Pos”+holder.ref+“\tqnty:”+holder.prod_qnty.getText().toString().trim());
//arrTemp[holder.ref]=arg0.toString();
}
});
//holder.prod_qnty.setText(myList.get(position));
holder.prod_qnty.setOnTouchListener(新视图.OnTouchListener()){
@凌驾
公共布尔onTouch(视图v,运动事件){
//TODO自动生成的方法存根
Log.e(“当前Qnty”,edit_Qnty.getText().toString().trim());
if(holder.prod_qnty.getText().toString().trim().equals(“0”)){
持牌人.产品编号.setText(“”);
}
字符串inttext=(“”+holder.prod_qnty.getText().toString().trim());
如果(!inttext.equals(“0”)){
持有人。产品价格。setText(“”);
}
返回false;
//返回true;
}
});
//使用setOnclickListener而不是setOnCheckedChangeListener
//完成编辑后,我们需要更新适配器
/*holder.prod_qnty.setOnFocusChangeListener(新视图.OnFocusChangeListener()){
public void onFocusChange(视图v,布尔hasFocus){
如果(!hasFocus){
final int pos=v.getId();
最终编辑文本Qnty=(编辑文本)v;
Log.e(“位置的Qnty”,“位置:+POS+”\tQnty:+Qnty.getText().toString().trim());
arrayproducts.get(pos.setQnty(Qnty.getText().toString().trim());
//holder.prod_qnty.setText(Caption.getText().toString().trim());
}
if (holder.qtyWatcher != null) {
            holder.txtFourth.removeTextChangedListener(holder.qtyWatcher);
        }
       // Create the TextWatcher corresponding to this row
        holder.qtyWatcher = new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
                if(s.toString().equals("")||s.toString().equals("0")){
                    arrayproducts.get(position).setQnty("0");
                }
                else{
                    arrayproducts.get(position).setQnty(s.toString());
                }

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {}

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        };