我有一个列表视图,用户可以在其中添加具有特定财务数字的几行。CCD_ 1在从CCD_ 3调用的CCD_。
在ActionBar
(在FragmentActivity
)中,有一个按钮打开一个常规Activity
,用户可以在其中添加数字。一旦他们在该页面上点击submit,它就会完成该"活动",它会调用onActivityResult()
,我只需执行FragmentTransaction
(在上面提到的同一个ListFragment
上)即可刷新页面,并显示新行。
这里有一个重要的部分:如果你点击行,它会打开一个对话框,用户可以在其中更改他们的号码。我对SQLite数据库进行了更新(有效),并尝试更新他们正在更改的ListView
1行的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();
}
注意:Adapter
和Listview
都是静态的,但我尝试过使用和不使用,结果相同。
在调用adapter.notifyDataSetChanged()之前,您需要更新适配器
不要手动更新ui