带有 EditText 的动态列表视图不清除 Same Activity 中的值
Dynamic Listview with EditText not clear values in Same Activity
我在我的代码中使用了 ExpandebleListView
,行是在 ADD Button
单击时动态生成的。每个新行包含两个 EditText
.
现在当我点击清除Button
时,它清除了list
项,但是当我点击添加新项时,它的在 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);
希望对您有所帮助
您没有为您的 Editext
设置任何值 您应该在 getView()
@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();
}
String Qty =bean.get(position).Qty;
viewHolder.editQty.setText(Qty);
viewHolder.editQty.addTextChangedListener(new onEditTextchange(holder.editQty, position));
}
public class onEditTextchange implements TextWatcher {
EditText getvalue;
int pos;
public onEditTextchange(EditText getvalue, int position) {
this.getvalue = getvalue;
this.pos = position;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
ItemBean objBean = new ItemBean();
objBean.Qty = getvalue.getText().toString();
objBean.Rate = items.get(pos).question;
objBean.Total = items.get(pos).question_id;
bean.set(pos, objBean);
}
}
希望对您有所帮助
我在我的代码中使用了 ExpandebleListView
,行是在 ADD Button
单击时动态生成的。每个新行包含两个 EditText
.
现在当我点击清除Button
时,它清除了list
项,但是当我点击添加新项时,它的在 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);
希望对您有所帮助
您没有为您的 Editext
设置任何值 您应该在 getView()
@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();
}
String Qty =bean.get(position).Qty;
viewHolder.editQty.setText(Qty);
viewHolder.editQty.addTextChangedListener(new onEditTextchange(holder.editQty, position));
}
public class onEditTextchange implements TextWatcher {
EditText getvalue;
int pos;
public onEditTextchange(EditText getvalue, int position) {
this.getvalue = getvalue;
this.pos = position;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
ItemBean objBean = new ItemBean();
objBean.Qty = getvalue.getText().toString();
objBean.Rate = items.get(pos).question;
objBean.Total = items.get(pos).question_id;
bean.set(pos, objBean);
}
}
希望对您有所帮助