我的ListView
内部EditText
输入类型为数字。当我在notifyDatasetChanged()
的焦点事件中使用EditText
时,我收到错误。
是notifydatasetchanged() - > focus-> notifyDatasetChanged() - >焦点...... 这个错误发生在Android 7或更高版本。
getView()
final ArrayAdapterListProduct.ViewHolder holder = new ArrayAdapterListProduct.ViewHolder();
holder.caption = (EditText) view.findViewById(R.id.changegift_listview_item_number);
if (promotionItem.getNumber_choose() != 0) {
holder.caption.setText(promotionItem.getNumber_choose() + "");
}
holder.caption.setId(position);
holder.caption.addTextChangedListener(new MyTextWatcher(holder.caption));
int temp_cout_product = 0;
if (promotionItem.getSoluongtonkho() > promotionItem.getPromotion_canget()) {
temp_cout_product = promotionItem.getPromotion_canget();
} else {
temp_cout_product = promotionItem.getSoluongtonkho();
}
holder.caption.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (!b) {
notifyDataSetChanged();
}
}
});
holder.caption.setFilters(new InputFilter[]{new InputFilterMinMax(0, temp_cout_product)});
return view;
所以我无法在editext中输入数字
答案 0 :(得分:1)
问题是,当视图没有焦点时,您正在OnFocusChangeListener
方法内部getView()
设置notifyDataSetChanged()
。此代码实际发生的情况是,ListView
是在初次调用notifyDataSetChanged()
的情况下创建的,并且填充了没有焦点的视图。这意味着,每次调用getView()
并设置OnFocusChangeListener
时,它都会调用notifyDataSetChanged()
,从而导致无限循环。
如果您没有看到更多代码或理解为什么要在焦点监听器内调用notifiyDataSetChanged()
,那么很难提供帮助。