gpt4 book ai didi

android - 方法 startManagingCursor 和构造函数 SimpleCursorAdapter 已弃用

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:33 26 4
gpt4 key购买 nike

我为显示来自数据库 sqlite 的数据创建了一个应用程序,但是在运行或构建时应用程序没有运行,因为方法 startManagingCursor 和构造函数 SimpleCursorAdapter 已被弃用。

这里是我的代码

DatabaseHelper.java

package latihan.listviewsqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "dbanime";
private static final String TABLE = "ANIME";
public static final String NAMA = "nama";
public static final String KEY_ID = "_id";

public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, 1);
}

public void createTable(SQLiteDatabase db){
db.execSQL("DROP TABLE IF EXIST ANIME");
db.execSQL("CREATE TABLE if not exists ANIME (_id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT");
}

public void generateData(SQLiteDatabase db){
ContentValues cv = new ContentValues();
cv.put(NAMA, "Naruto Shipuuden");
db.insert(TABLE, NAMA, cv);
cv.put(NAMA, "One Piece");
db.insert(TABLE, NAMA, cv);
cv.put(NAMA, "Bleach");
db.insert(TABLE, NAMA, cv);
}

public void deleteAllData(SQLiteDatabase db){
db.delete(TABLE, null, null);
}

public Cursor fetchAllAnime(SQLiteDatabase db){
return db.query(false, TABLE, new String[] {KEY_ID, NAMA}, null, null, null, null, null, null);
}

public void onCreate(SQLiteDatabase db){
createTable(db);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

}

}

MainActivity.java

package latihan.listviewsqlite;

import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends Activity {

private DatabaseHelper dbHelper;
private SQLiteDatabase db = null;
private ListView listContent = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbHelper = new DatabaseHelper(this);
db = dbHelper.getWritableDatabase();
dbHelper.deleteAllData(db);
dbHelper.generateData(db);
setContentView(R.layout.activity_main);
listContent = (ListView) findViewById(R.id.animeList);
isDataListView();


// setContentView(R.layout.activity_main);
}

private void isDataListView(){
Cursor animeCursor;

animeCursor = dbHelper.fetchAllAnime(db);

startManagingCursor(animeCursor);
String[] from = new String[]{dbHelper.NAMA};
int[] to = new int[]{R.id.txtAnime};

SimpleCursorAdapter animeAdapter = new SimpleCursorAdapter(this, R.layout.row, animeCursor, from, to);

listContent.setAdapter(animeAdapter);
}

public void onDestroy(){
super.onDestroy();
try{
db.close();
}catch (Exception ex){

}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

在方法startManagingCursor和构造函数SimpleCursorAdapter中写代码有问题吗我非常需要您的帮助,谢谢

最佳答案

首先,startManagingCursor() 应该仍然有效。它并不理想,因为它在主应用程序线程上执行数据库 I/O。在 Android 中,“弃用”通常意味着“我们有其他我们认为更好的建议您使用的东西”。这通常意味着您应该考虑迁移到它的替代品。

Loader 框架是异步和事件驱动的。与现在已弃用的方法 startManagingCursor() 和构造函数 simpleCursorAdapter 不同。

如果您正在构建新代码,您通常不应使用已弃用的 API,尽管这取决于您的目标 Android 版本。

简而言之,即使已弃用,您的方法仍应有效,因为您的问题与弃用有关,因此我做出了相应的回答。如果你想修复这个错误(让这个代码正常工作)发布错误日志,我们可以尝试找出原因。或者,如果您想更改代码,请查看 here有关 Loaders

的更多信息

关于android - 方法 startManagingCursor 和构造函数 SimpleCursorAdapter 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com