- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我为显示来自数据库 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/
我已经在网上搜索了几天(实际上是几个晚上 ;),但目前我一直在为我的问题寻找解决方案。基本上我想要的是 SQLite 的 ListView ,带有过滤器和重要的事情:保持列表行结果与 SQLite 行
当我在 Droidio 中输入“SimpleCursorAdapter”时,对于应该添加哪个 SimpleCursorAdapter 类是矛盾的: 我也不知道 - 我应该使用哪一个作为在 ListVi
下面是让我悲伤的代码示例。如果我将 simpleCursorAdapter 放在 textchangedlistener 之外,但不在我不断收到消息中,则 simpleCursorAdapter 可以
我的每一行都有一个 ListView,我有一个 LinearLayout,其中包含一些对象(主要是一些 TextView)。 这个ListView我从光标动态填充它。在这个游标中,我有一个值 true
我正在尝试构建 android 应用程序,它似乎将 Force Close 保持在同一位置 (setListAdapter/SimpleCursorAdapter) 现在不管我做什么。这是 DBAda
我有一个关于 SimpleCursorAdapter 的恼人问题。我的程序有 ListView 和 ListActivity。每行都有自己的布局:
此代码通过显示数据库中的所有数据正常工作,但我在过滤时遇到问题。我尝试了很多代码但没有任何效果,有人可以帮助我吗?谢谢 package com.example.dictionary; imp
我想实现一个自定义的 SimpleCursorAdapter,它只在偶数行上显示背景颜色(在我的例子中是蓝色)。我的实现如下: public class ColoredCursorAdapter ex
我正在使用自定义的 SimpleCursorAdapter。目前,如果在数据库/游标中找不到任何条目,我的列表将保持为空。现在,如果光标/数据库中没有条目,我想在列表中显示一条消息。我该如何处理这个事
我一直在开发 Android 应用程序,我有一个问题 - ListView 使用 SimpleCursorAdapter(此游标从 SQLite 数据库获取信息),但如果我编辑我的数据库,ListVi
我试图在我的类中设置一个“SimpleCursorAdapter”对象变量,以便所有方法都可以访问它,所有这些都是非常标准的东西。目前,我在“OnCreate”方法中遇到错误,显示以下错误: 错误:
我想将一个字符串附加到我从数据库中提取到游标中的 ID。我有一个包含 2 个项目的 ListView,我希望文本写入 Id+"some text"。我使用 SimpleCursorAdapter 和
我有一个用 SimpleCursorAdapter 填充的 ListView。对于我列表中的每一项,我按以下顺序排列:TextView > RatingBar > TextView > ImageVi
我正在开发我的第一个 Android 应用程序,但不知道如何让我的 SimpleCursorAdpater 填充 View 。我传入的游标在其中产生了结果,因此问题一定出在实例化适配器或将其绑定(bi
我正在尝试使用自定义适配器访问列表 Activity 。我已经在不使用任何自定义适配器的情况下直接进行了尝试,它运行良好,但因为我想在 ListView 中添加更多功能,所以我想实现一个自定义适配器。
我正在尝试使用带有 ViewBinder 的 SimpleCursorAdapter 从数据库中获取图像并将其放入我的 ListView 项目 View .这是我的代码: private void s
我正在查看 Android 开发者网站上的记事本教程,发现 SimpleCursorAdaptor 已弃用。 新的构造函数 public SimpleCursorAdapter (Context co
我正在使用已弃用的 SimpleCursorAdapter 将数据从 Cursor 显示到 ListView。我添加了额外的参数 0,它删除了弃用的警告,但我想使用更好的方式来显示数据。我读过一些关于
所以我使用 SimpleCursorAdapter 将 SQLite 中的数据适配到 ListView 中。让我们称这个数据库为 testData。我在 testData 中的一列使用 0 或 1 记
我正在使用一个数据库,从中获取一个游标,然后使用一个 simplecursoradapter 来填充一个 ListView 。我似乎无法弄清楚为什么应用程序在创建新的 simplecursoradap
我是一名优秀的程序员,十分优秀!