我正在使用带有arrayadapter的listview ..我想知道如何使用适配器直接更改对象属性?无需删除它并读取它。有可能吗?
目前我使用..
btnModifierNom.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
int itemPosition = lstPersonnes.getCheckedItemPosition();
selectedItem = lstPersonnes.getItemAtPosition(itemPosition).toString();
String personne = adapter.getItem(itemPosition);
adapter.remove(personne);
personne = txtNouveauNom.getText().toString();
adapter.insert(personne, itemPosition);
adapter.notifyDataSetChanged(); }
});
但它不是一种非常优雅的方式......如果可能的话,我希望避免将其移除并重新插入。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
为什么你不能像这样改变价值:
int itemPosition = lstPersonnes.getCheckedItemPosition();
String personne = adapter.getItem(itemPosition);
personne = txtNouveauNom.getText().toString();
adapter.notifyDataSetChanged();
如果adapter.notifyDataSetChanged()
无效,请尝试listView1.setAdapter(adapter)
刷新列表视图。
<强>更新强>
试试这个:
btnModifierNom.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
int itemPosition = lstPersonnes.getCheckedItemPosition();
// Gets the textview of the item at the position in the listview
((TextView)lstPersonnes.getChildAt(itemPosition)).setText(txtNouveauNom.getText().toString());
// Put this
adapter.notifyDataSetChanged();
// Or this to refresh listview
lstPersonnes.setAdapter(adapter);
}
});
答案 1 :(得分:0)
看起来ArrayAdapter适用于静态数据。尝试从BaseAdapter扩展,然后notifyDataSetChanged()将起作用。