Android:从UI线程刷新视图

时间:2015-02-21 03:28:41

标签: android scala android-listview

基本问题,但我解决问题的尝试失败了

我的活动包含以下内容

override def onCreate(savedInstanceState: Bundle) {
 super.onCreate(savedInstanceState)
 setContentView(R.layout.match_list_view)
 val listView = findViewById(R.id.matchListView).asInstanceOf[ListView]
 listView.setAdapter(new MatchListViewAdapter(MatchDao.retrieveAllMatches(), this, listView))

}

显示ListView

中的匹配列表

我的适配器在其getView方法中包含以下用于单个匹配的逻辑:

val deleteButton = updatedView.findViewById(R.id.deleteIndividualMatchButton).asInstanceOf[Button]
    deleteButton.setOnClickListener(new OnClickListener {
      override def onClick(v: View) {
        new DeleteMatchDialogFragment(getItem(position), MatchListViewAdapter.this).show(activity.getFragmentManager, "DeleteFragment"
      }
    })

我的DeleteMatchDialogFragment包含以下逻辑:

override def onCreateDialog(savedInstanceState: Bundle): Dialog = {
    createDialog(null, R.string.deleteMatch, R.string.ok, {
      MatchDao.delete(matchToDelete)
      adapter.notifyDataSetInvalidated()
    })
  }

所以基本上在ListView中,我有一个匹配列表,每个匹配都有一个删除按钮。 当用户单击“删除”按钮时,我希望从数据库中删除匹配项,然后刷新ListView

一切正常,但视图未刷新。 我也尝试将view.invalidate()添加到DeleteMatchDialogFragment,但也没有运气。

我需要在这做什么?

1 个答案:

答案 0 :(得分:-1)

  

当用户点击“删除”按钮时,我希望从中删除匹配项   数据库然后刷新ListView

要从ListView中删除项目,请创建一个方法MatchListViewAdapter,该方法从getCount方法中使用的同一数据源实例中删除项目,如:

public void removeItem(int pos){

  this.dataContainer.remove(pos);
  this.notifyDataSetChanged();
}

removeItem

之前调用createDialog方法中的MatchDao.delete(matchToDelete)