Android 使用setText()时未更新ListView
我有一个列表视图,用户可以在其中添加具有特定财务编号的几行。Android 使用setText()时未更新ListView,android,listview,adapter,Android,Listview,Adapter,我有一个列表视图,用户可以在其中添加具有特定财务编号的几行。ListView位于从FragmentActivity调用的ListFragment中 在ActionBar(在FragmentActivity中)有一个按钮,打开一个常规活动,用户可以在其中添加数字。一旦他们点击该页面上的submit,它就完成了该活动,它调用onActivityResult(),在这里我只需执行片段事务(与上面提到的列表片段相同)来刷新页面并显示新行 这里有一个重要的部分:如果您单击该行,它将打开一个对话框,用户可以
ListView
位于从FragmentActivity
调用的ListFragment
中
在ActionBar
(在FragmentActivity
中)有一个按钮,打开一个常规活动
,用户可以在其中添加数字。一旦他们点击该页面上的submit,它就完成了该活动,它调用onActivityResult()
,在这里我只需执行片段事务
(与上面提到的列表片段
相同)来刷新页面并显示新行
这里有一个重要的部分:如果您单击该行,它将打开一个对话框,用户可以在其中更改他们的号码。我对SQLite数据库进行了一次更新(可以正常工作),并尝试更新它们正在更改的ListView
行的TextView
。然而,什么也没有发生
下面是更新的代码(我只包括一个字段,但实际上有多个EditText
字段和TextView
s执行相同的操作):
注意:
Adapter
,Listview
都是静态的,但我尝试了使用和不使用,结果相同。在调用Adapter.notifyDataSetChanged()之前,您需要更新适配器
不要手动更新ui您的适配器如何与数据源交互?Hmmmm。。。我看不出它在哪里。与adapter.setName(name)@LenaBru不同的是,这就是问题所在;你可以写下来作为答案。谢谢;这就是我所做的。我还删除了所有直接设置行本身的代码,只更改了适配器(我猜是正确的方式)。
public void onListItemClick(ListView l, View v, final int position, long id) {
final Debt debt = values.get(position);
final long boxId = debt.getId();
BoxName = debt.getName();
// set up dialog
final Dialog dialog = new Dialog(getActivity());
// set up text
et1 = (EditText) dialog.findViewById(R.id.editText1);
et1.setText(BoxName);
Button button = (Button) dialog.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
BoxName = et1.getText().toString();
datasource.updateDebt(boxId, BoxName, BoxBalance, BoxApr,
BoxPayment, BoxSApr, BoxSAprTime, BoxDay);
dialog.dismiss();
// when I log firstVisible and position; correct numbers appear
int firstVisible = lv.getFirstVisiblePosition();
View rowView = lv.getChildAt(position - firstVisible);
TextView newName = ((TextView) rowView
.findViewById(R.id.labelName));
// this is line that does not work
newName.setText(BoxName);
adapter.notifyDataSetChanged();
}