很抱歉,如果这是一个愚蠢的问题,但我基本上是在试图弄清楚出于某种原因如何做到这一点。
我有一个使用ContentProvider
从SQL数据库填充的联系人ArrayList(带有两个参数,名称和电话号码)。使用CursorAdapter
填充ArrayList,然后在UI中显示。我希望用户能够将项目动态添加到联系人列表中。
在CursorAdapter中,bindView()
和newView()
中定义了两个列表项类型。第一种类型包括两个EditTexts,一个用于名称,一个用于电话号码。第二种类型包括两个TextView,用于名称和电话号码。
基本上,这就是我想要发生的事情:
用户按下一个显示“添加联系人”的按钮,并将一个类型为EditText的新列表项动态添加到列表中。
用户填写联系信息,然后按下“保存联系人”按钮。按下此按钮时,EditText类型的列表项将转换为TextView类型的列表项,并添加到ArrayList并与其他联系人一起显示。
我很确定我至少知道如何做第二件事的一部分,就像这样:
contactsName = nameEditText.getText().toString();
contactsNumber = numberEditText.getText().toString();
contacts.add(new ContactsObject(contactsName, contactsNumber));
contactsAdapter.notifyDataSetChanged();
然而,我遇到的麻烦是第一件事。如何在两种不同的视图类型之间进行转换?如何告诉适配器创建某种类型的列表项(EditText),然后将其转换为其他类型(TextView)?
答案 0 :(得分:0)
在插入(或删除或更新)新数据后更新数据库时,您应该使用CursorLoader,在CursorAdapter子类对象上调用方法swapCursor(Cursor cursor)。当然,检查适配器是否为空。
这将替换适配器使用的游标对象并通知设置更改,重新绘制所有视图。