更新数据库后如何更新ListView?

Ben
public class SettingsActivity extends AppCompatActivity {
private Context context;
private DogDatabaseHelper dbHelper;
private ListView mListView;
private ArrayList<String> names = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstance){
    super.onCreate(savedInstance);
    setContentView(R.layout.settings);
    mListView = (ListView)findViewById(R.id.listforall);
    context = this;

    DogDatabaseHelper dbHelper = new DogDatabaseHelper(getApplicationContext());
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Cursor cursor = db.rawQuery("select name from dog",null);
    int count = cursor.getColumnIndex("name");
    if(cursor.moveToFirst()){

        do{
            names.add(cursor.getString(cursor.getColumnIndex("name")));
        }while (cursor.moveToNext());
        AdapterForNames namesAdapter = new AdapterForNames(this,names);
        namesAdapter.notifyDataSetChanged();
        mListView.setAdapter(namesAdapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Intent intent = new Intent(SettingsActivity.this,SetupActivity.class);
                intent.putExtra("name",names.get(position));
                startActivity(intent);
            }
        });
    }
}

这是ListView我正在使用的,但是在更新数据库之后,我无法ListView刷新,我想我应该在重新启动方法中放入一些代码?但不知道该怎么办。有什么帮助吗?

Shridutt Kothari

更改以下代码:

public class SettingsActivity extends AppCompatActivity {
private Context context;
private DogDatabaseHelper dbHelper;
private ListView mListView;
private ArrayList<String> names = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstance){
    super.onCreate(savedInstance);
    setContentView(R.layout.settings);
    mListView = (ListView)findViewById(R.id.listforall);
    context = this;

    DogDatabaseHelper dbHelper = new DogDatabaseHelper(getApplicationContext());
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Cursor cursor = db.rawQuery("select name from dog",null);
    int count = cursor.getColumnIndex("name");
    if(cursor.moveToFirst()){

        do{
            names.add(cursor.getString(cursor.getColumnIndex("name")));
        }while (cursor.moveToNext());
        AdapterForNames namesAdapter = new AdapterForNames(this,names);
        namesAdapter.notifyDataSetChanged();
        mListView.setAdapter(namesAdapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Intent intent = new Intent(SettingsActivity.this,SetupActivity.class);
                intent.putExtra("name",names.get(position));
                startActivity(intent);
            }
        });
    }
}

使用以下代码:

public class SettingsActivity extends AppCompatActivity {
    private Context context;
    private DogDatabaseHelper dbHelper;
    private ListView mListView;
    private ArrayList<String> names = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstance){
        super.onCreate(savedInstance);
        setContentView(R.layout.settings);
        context = this;
        AdapterForNames namesAdapter = new AdapterForNames(this,names);
        mListView = (ListView)findViewById(R.id.listforall);
        mListView.setAdapter(namesAdapter);
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Intent intent = new Intent(SettingsActivity.this,SetupActivity.class);
                intent.putExtra("name",names.get(position));
                startActivity(intent);
            }
        });

        DogDatabaseHelper dbHelper = new DogDatabaseHelper(getApplicationContext());
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select name from dog",null);
        int count = cursor.getColumnIndex("name");
        if(cursor.moveToFirst()){
            do{
                names.add(cursor.getString(cursor.getColumnIndex("name")));
                namesAdapter.notifyDataSetChanged();
            } while (cursor.moveToNext());
        }
    }

希望能帮助到你!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在其他Activity中更新数据库后如何在Activity中更新ListView?

来自分类Dev

交易后如何更新数据库?

来自分类Dev

数据库插入后Listview不更新

来自分类Dev

购买后如何更新数据库中的用户?

来自分类Dev

本周门户更新后如何删除DocumentDB数据库?

来自分类Dev

数据库更新后如何清除缓存?

来自分类Dev

循环Listview,更新数据库

来自分类Dev

拖放操作后更新数据库

来自分类Dev

更新数据库更新后显示的数据

来自分类Dev

数据库更新后更新片段TextView

来自分类Dev

更新结果集后更新数据库

来自分类Dev

更新后返回更新的对象数据库,而不是数

来自分类Dev

无法更新后数据库更新当前时间戳

来自分类Dev

在数据库更新后,如何使Rails使用Ajax更新HTML表行?

来自分类Dev

在数据库更新后,如何使Rails使用Ajax更新HTML表行?

来自分类Dev

在 Django 中更新数据库后如何自动更新视图?

来自分类Dev

获取某些数据后如何更新ListView?

来自分类Dev

如何在数据库更新后立即有效地从数据库获取数据?

来自分类Dev

如何使用DataRow更新数据库?

来自分类Dev

JDBC如何更新数据库?

来自分类Dev

如何实时更新Firebase数据库?

来自分类Dev

如何更新Derby数据库的版本

来自分类Dev

如何更新实体和数据库

来自分类Dev

如何实时更新Firebase数据库?

来自分类Dev

如何部分更新数据库记录?

来自分类Dev

如何更新到数据库

来自分类Dev

如何离线更新 ClamAV 数据库?

来自分类Dev

插入数据库Web服务后更新数据

来自分类Dev

从数据库检索数据后,Angular View不更新