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();

}