android - 在列表视图中调用“notifydatasetchanged”时,以前的行正在替换为新行
问题描述
custom listview
我想通过clicking
a向 a 添加一些新行button
。我的每一行都包含一个EditText
. 我的需要是每次都创建新clicking
行Button
。我成功地做到了,但这里面临的问题是,当 是 时clicking
,Button
将创建一个新行,但它刷新了整个自定义,它用空listview
替换了我写的所有内容(它正在创建一些新的)。我不需要那样做。即使在创建新行之后,我也需要保留我写的全部数据。EditText
EditText
EditText
这是我调用的代码
adapter
:
final RequestAttributeAdapter adapter = new RequestAttributeAdapter(context,listItems);
lv_Attribute.setAdapter(adapter);
tvAddAttribute.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listItems.add("1");
adapter.notifyDataSetChanged();
}
});
这是我的
adapter class
:
private ArrayList<String> attributes;
private LayoutInflater inflater;
public RequestAttributeAdapter(Context context, ArrayList<String> attributes) {
this.attributes = attributes;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return attributes.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@SuppressLint({"InflateParams", "ViewHolder"})
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
view = inflater.inflate(R.layout.item_attribute_list,null);
FloatingEditText ftName = (FloatingEditText) view.findViewById(R.id.etAttrName);
TextView attributeNumber = (TextView) view.findViewById(R.id.attributeNumber);
attributeNumber.setText("Attribute : "+(position+1));
//CheckBox cbRequired = (CheckBox) view.findViewById(R.id.cbRequired);
//cbRequired.setChecked(attributes.get(position).isRequired());
//ftName.setText(attributes.get(position).getAttribute_name());
if (position>0)
ftName.requestFocus();
ftName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
//attributes.get(position).setAttribute_name(editable.toString());
}
});
return view;
}
解决方案
您可以通过根据他们的位置保存数据EditText
并从和获取数据来实现这一点ArrayList
getView()
ArrayList
setText()
EditText
希望这会有所帮助
推荐阅读
- html - 父 div 不会在照片幻灯片中自动为子 div 设置高度
- ios - 是否可以在 Scenekit 渲染和普通 iOS 应用程序渲染之间来回切换?
- html - 同一行上的引导导航栏
- javascript - Textarea 不更新道具更新:使用 React
- ruby-on-rails - 如何将变量传递给哈希字段上的 mongoid 查询
- java - 在通知右侧添加图标按钮
- java - switch 语句的问题
- powershell - 如何交换多个文件名的一部分?
- python - 如何使用 pybuilder 设置 python 项目并表现
- function - Toggle Haskell 语言中的案例