android - 如何更改 ListView 作为 TextView 的更改(Android)

标签 android listview textwatcher

我正在尝试根据编辑文本中的更改更新列表

当我单击编辑文本时,我无法编辑值。 我收到以下错误..

IInputConnectionWrapper: getExtractedText on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection

这是我的 Listadapter 的代码

public class CartListAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    private Context mContext;
    ProgressDialog pDialog;


    ArrayList<HashMap<String, String>> itemvalues;
    HashMap<String, String> itemlist;
    //    ImageLoader mImageLoader;
    public CartListAdapter(Context c,ArrayList<HashMap<String,String>>itemvalues) {
        this.mContext = c;
        this.itemvalues=itemvalues;

        inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //   mImageLoader = VolleyClass.getInstance().getImageLoader();


    }

    @Override
    public int getCount() {
        return itemvalues.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }



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


        ViewHoldercart holder=null;
        View view = convertView;
        itemlist = itemvalues.get(position);
        if (view == null) {
            holder = new ViewHoldercart();

            view = inflater.inflate(R.layout.cartlistrow, parent, false);


            // holder.imageView = (NetworkImageView) view.findViewById(R.id.icon);
            //holder.progressBar = (ProgressBar) view.findViewById(R.id.product_grid_text);
            holder.itemname =(TextView)view.findViewById(R.id.itemname);
            holder.itemamount =(TextView)view.findViewById(R.id.itemamount);
            holder.itemqty=(EditText)view.findViewById(R.id.itemqty);
            holder.closebtn=(ImageView)view.findViewById(R.id.closebtn);
            holder.itemid1 =(TextView)view.findViewById(R.id.itemid1);
            holder.itemtotal =(TextView)view.findViewById(R.id.itemtotal);
            view.setTag(holder);
        } else {
            holder = (ViewHoldercart) view.getTag();
        }
        holder.itemid1.setText(itemvalues.get(position).get("itemid"));
        holder.itemname.setText(itemvalues.get(position).get("itemname"));
        holder.itemamount.setText(itemvalues.get(position).get("itemrate"));
        holder.itemqty.setText(itemvalues.get(position).get("itemqty"));
        holder.itemtotal.setText(itemvalues.get(position).get("total"));


        holder.itemqty.addTextChangedListener(new TextWatcher()
        {


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

            }

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

                cartListAdapter.notifyDataSetChanged();
            }


            @Override
            public void afterTextChanged(Editable s) {
                try {
                    HashMap<String, String> hh = itemvalues.get(position);
                    double qty1 = Double.parseDouble(s.toString());
                    //    Log.d("value",s.toString());
                    double itemprice1 = Double.parseDouble(hh.get("itemrate").toString());
                    double temptotal = (qty1 * itemprice1);
                    hh.put("total",String.valueOf(temptotal));
                    itemvalues.set(position,hh);
                    granttotal =0.0;
                    for(int j = 0; j< itemvalues.size();j++){
                        granttotal = granttotal+Double.parseDouble(itemvalues.get(j).get("total"));
                    }
                    // Log.d("value",String.valueOf(granttotal));
                    grandtotal.setText(String.valueOf(df.format(granttotal)));


                }catch(NumberFormatException e){

                }
                cartListAdapter.notifyDataSetChanged();
            }
        }
        );



        holder.closebtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                itemvalues.remove(position);
                granttotal =0.0;
                for(int j = 0; j<itemvalues.size();j++){
                    granttotal = granttotal+Double.parseDouble(itemvalues.get(j).get("total"));
                }
                grandtotal.setText(String.valueOf(df.format(granttotal)));

            }

        });

        //holder.imageView.setImageUrl(AppConstant.category_image_url+catitems.get("cat_icon1"),mImageLoader);
        return view;

    }


}

class ViewHoldercart {
    // NetworkImageView imageView;
    EditText itemqty;
    TextView itemamount,itemname,itemid1,itemtotal;
    ImageView closebtn;
}

我已经尝试过 onTextChanged。同样的结果。

提前致谢..!!

最佳答案

您必须在工作之前删除文本更改监听器,然后再次添加监听器

关于android - 如何更改 ListView 作为 TextView 的更改(Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329175/

相关文章:

android - Android 游戏开发模式?

c# - 选择行时修改 ListView 的行行为

android - android中C++与Java的通信

java - 无法在尚未调用 Looper.prepare() android 服务的线程内创建处理程序

android - 如何使用 NativeActivity 写入内部存储文件系统?

android - 使用 ArrayAdapter 在 ListView 中编辑文本

android - 如何处理android中Listview中的点击事件?

Android - 为粘贴文本中的每个字符调用一次 TextWatcher

java - 当用户尝试插入超过最大限制的文本时如何制作 toast ?

android - 对于输入类型为 textWebPassword 的 EditText,TextWatcher 的 onTextChanged 方法中的计数参数无法正常工作