gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:46:01 24 4
gpt4 key购买 nike

我在我的代码中使用了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com