使用setText()时ListView未更新



我有一个列表视图,用户可以在其中添加具有特定财务数字的几行。CCD_ 1在从CCD_ 3调用的CCD_。

ActionBar(在FragmentActivity)中,有一个按钮打开一个常规Activity,用户可以在其中添加数字。一旦他们在该页面上点击submit,它就会完成该"活动",它会调用onActivityResult(),我只需执行FragmentTransaction(在上面提到的同一个ListFragment上)即可刷新页面,并显示新行。

这里有一个重要的部分:如果你点击行,它会打开一个对话框,用户可以在其中更改他们的号码。我对SQLite数据库进行了更新(有效),并尝试更新他们正在更改的ListView1行的TextView。然而,什么也没发生。

以下是更新的代码(我只包含了一个字段,但实际上有多个EditText字段和TextView做同样的事情):

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

注意:AdapterListview都是静态的,但我尝试过使用和不使用,结果相同。

在调用adapter.notifyDataSetChanged()之前,您需要更新适配器

不要手动更新ui

最新更新