android - 带有 EditText 的动态 ListView 不清除同一 Activity 中的值

标签 android listview expandablelistview

我在我的代码中使用了 ExpandebleListView,在点击 ADD Button 时动态生成行。每个新行包含两个 EditText

现在,当我点击 Clear Button 时,它会清除 list 项目,但是当我点击 add new item 时,它的 EditText 中显示带有上次输入值的新内容。

那么,如何在不改变 Button Click Activity 的情况下清除所有内容和项目?

这是我清除数据的代码

  itemBean.clear();
  ItemBean objBean = new ItemBean();
  objBean.Qty = "";
  objBean.Rate = "";
  objBean.Total = "";
  itemBean.add(objBean);
  listviewAdapterForItem.notifyDataSetChanged();

这是我添加数据的代码

 ItemBean objBean = new ItemBean();
  objBean.Qty = "";
  objBean.Rate = "";
  objBean.Total = "";
  itemBean.add(objBean);
  listviewAdapterForItem.notifyDataSetChanged();

这是我的适配器代码

public class ListviewAdapterForItem extends BaseAdapter {

Context context;
ArrayList<ItemBean> bean;

public ListviewAdapterForItem(Context context, ArrayList<ItemBean> itemBeans) {
    this.context = context;
    if(this.bean != null){
        this.bean.clear();
    }
    this.bean = itemBeans;
}

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

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

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

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

    final ViewHolder viewHolder;

    if (convertView == null){
        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.list_row_items,null);

        viewHolder = new ViewHolder();
        viewHolder.editQty = convertView.findViewById(R.id.editQty);
        viewHolder.editRate = convertView.findViewById(R.id.editRate);
        viewHolder.txtRs = convertView.findViewById(R.id.txtRs);
        convertView.setTag(viewHolder);

    }else {

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

    ItemBean objBean = (ItemBean) getItem(position);
    if(objBean != null) {
        viewHolder.editQty.setText(objBean.getQty());
        viewHolder.editRate.setText(objBean.getRate());
        viewHolder.txtRs.setText(objBean.getTotal());
    }
}
}

最佳答案

我认为你的代码中有一些逻辑错误,首先要清楚

bean.clear();
ItemBean objBean = new ItemBean();
objBean.Qty = "";
objBean.Rate = "";
objBean.Total = "";
bean.add(objBean);
listviewAdapterForItem.notifyDataSetChanged();

添加是因为 bean 是您的项目列表

  ItemBean objBean = new ItemBean();
  objBean.Qty = "abc";   // some dummy values to test
  objBean.Rate = "xyz";
  objBean.Total = "abc";
  bean.add(objBean);
  listviewAdapterForItem.notifyDataSetChanged();

如果你想清除所有的项目,那么你应该这样做

bean.clear(); // it will clear all your list, what you are doing is clearing or removing one item

那么在您的 getView() 函数中获取编辑文本的引用并在那里清除它

viewHolder.editQty= (EditText) convertView.findViewById(R.id.exitText);// change editext accordingly
editText.getText().clear();

或者其他解决方案可以声明一些类型为 String 的 xyz 变量,将其初始化为空值,例如 String xyz = "" 然后

editText.setText(xyz);

希望对你有帮助

关于android - 带有 EditText 的动态 ListView 不清除同一 Activity 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51924815/

相关文章:

android - 为什么 onDraw() 不断调用?

android - 如何在每个导航选项卡的 fragment 内创建 2 个 fragment

android:如何使用触摸和拖动在它们之间创建不同的 "screens"和导航?

android - 如何在自定义 listView 上制作自定义 listSelector

android - 如何在 ExpandableListView 中组合子项及其标题?

android - 我应该使用什么作为 setOnClickListener() 方法的参数?

android - 无法从总数中减去 SharedPreference 编号

xml - 为什么Listview + Selector从xml文件崩溃

android - ExpandableListView:如果有展开的 childView,则返回错误的 groupPosition

Android ExpandableListView 隐藏组