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

现在,当我单击“清除Button”时,它清除了“ list”项目,但是当我单击“添加新项目”时,它显示了新的内容,并且在EditText中显示了最后输入的值。

因此,如何清除所有内容和项目而不更改Button Click上的活动?

这是我的清晰数据代码

  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);


希望这可以帮助

10-07 19:15
查看更多