我为数据库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的更多信息。

10-08 16:14