使用更新的变量刷新活动

时间:2017-03-12 16:08:17

标签: android listview android-activity android-sqlite refresh

我在这里找不到这个问题的答案,但我的数据库中有ListView的活动。

String ascOrDescFilter = " ASC";
String columnFilter = "amount";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    helper = new DatabaseHelper(this);
    dbList= new ArrayList<DatabaseModel>();
    dbList = helper.getDataFromFilteredDB(columnFilter, ascOrDescFilter);`

我想在放入用户可以在上下文菜单中更改的更新变量时刷新我的活动。

    @Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.schedule:
            columnFilter="spare1";
            ascOrDescFilter= " ASC";
            //dbList = helper.getDataFromFilteredDB("spare1", " ASC");
            onRestart();
            return true;
        case R.id.amount:
            columnFilter="spare1";
            ascOrDescFilter= " ASC";
            //dbList = helper.getDataFromFilteredDB("balance", " DESC");;
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}

我想我需要调用onRestart或onResume?但我不确定如何为我的活动实施这些。我需要一个意图吗?正如您从上面的程序中看到的那样,我已经使用onStart方法(以及onResume + onRecreate)尝试了它,但没有任何东西可以让我的Listview刷新。

   @Override
public void onRestart()
{
    super.onRestart();
    startActivity(getIntent());
}

@Override
protected void onResume() {
    super.onResume();
}

//@Override
protected void onRecreate() {
    super.onResume();
    this.onCreate(null);
}

谢谢,任何指针都会非常有用。这是我自己开发的第一个应用程序。

1 个答案:

答案 0 :(得分:0)

只需在ListView上使用适配器,当您更改数据时,只需更新列表中的数据并致电adapter.notifyDataSetChanged()

如果您想编写自己的适配器,请从BaseAdapter扩展它,否则ArrayAdapter是最简单的使用。

这可能会让您开始使用适配器:https://guides.codepath.com/android/Using-an-ArrayAdapter-with-ListView