我有一个列表视图,用户可以在其中添加具有特定财务编号的多行。 ListView
位于从ListFragment
调用的FragmentActivity
。
在ActionBar
(FragmentActivity
)中,有一个按钮可以打开常规Activity
,用户可以在其中添加数字。一旦他们点击该页面上的提交,它就会完成该活动,它会调用onActivityResult()
我只需执行FragmentTransaction
(在上面提到的ListFragment
上)来刷新页面和新行显示。
以下是重要部分:如果单击该行,则会打开一个对话框,用户可以在其中更改其编号。我对SQLite数据库(有效)进行了更新,并尝试更新他们正在更改的TextView
行的ListView
。然而,没有任何反应。
以下是有关更新的代码(我只包含一个字段,但实际上有多个EditText
字段和TextView
s做同样的事情):
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
都是静态的,但我尝试使用和不使用相同的结果。
答案 0 :(得分:1)
在调用adapter.notifyDataSetChanged()
之前,需要更新适配器不要手动更新ui