我为数据库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){
}
}
main活动.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中,“deprecated”通常意味着“我们有一些我们认为更好的东西建议您使用”。这通常意味着您应该考虑迁移到它的替代者。
加载程序框架是异步的和事件驱动的。与现在被弃用的方法startManagingCursor()
和consutractorsimpleCursorAdapter
相反。
如果你正在构建新的代码,你通常不应该使用不推荐的api,尽管这将取决于你的目标android版本。
简而言之,你的方法应该仍然有效,即使被否决了,因为你的问题与否决有关,我相应地回答了。如果你想修复这个bug(将代码设置为正常工作),可以发布错误日志,我们可以尝试找出原因。或者,如果要更改代码,请查看here以获取有关Loaders
的更多信息。