Android 带有SQLite数据库和custmize listview的简单coursor适配器
我搞不清楚实际的错误在哪里。我想使用简单的coursor适配器将SQLite数据库中的记录显示到listview中。在我的SQLite数据库中没有像_id这样的字段!但错误在于,我在下面提到: 错误:Android 带有SQLite数据库和custmize listview的简单coursor适配器,android,sqlite,listview,simplecursoradapter,Android,Sqlite,Listview,Simplecursoradapter,我搞不清楚实际的错误在哪里。我想使用简单的coursor适配器将SQLite数据库中的记录显示到listview中。在我的SQLite数据库中没有像_id这样的字段!但错误在于,我在下面提到: 错误: java.lang.RuntimeException:无法启动活动组件信息{com.blundell.tut/com.blundell.tut.ui.phone.update_page}:java.lang.IllegalArgumentException:列'\u id'不存在 这里提到了我的J
java.lang.RuntimeException:无法启动活动组件信息{com.blundell.tut/com.blundell.tut.ui.phone.update_page}:java.lang.IllegalArgumentException:列'\u id'不存在
这里提到了我的Java文件
更新_page.java
公共类更新\u页面扩展活动
{
DatabaseHandler db=新的DatabaseHandler(此);
公共字符串tableName=db.TABLE\u联系人;
公共字符串databaseName=db.DATABASE\u NAME;
公共字符串task\u name=db.KEY\u task;
公共字符串dt=db.KEY\u DATETIME;
private ArrayList results=new ArrayList();
private ArrayList results2=新建ArrayList();
意图,意图;
SQLITE数据库;
ListView-myview;
光标c;
字符串o_name,o_no1;
//字符串o_id1=null;
HttpClient;
整数op_id,状态;
字符串url;
上下文ctx;
意图我的意图;
最终主要活动法案=新的主要活动();
创建时的公共void(Bundle savedInstanceState)
{
ctx=这个;
database=act.getInstance().openOrCreateDatabase(“contactsManager”,
SQLiteDatabase.CREATE_如果需要,则为null);
makeText(getApplicationContext(),“数据库已打开”,1500).show();
最后一个字符串[]columnsone={“id”,“task\u name”,“date\u time”};
字符串[]columnstwo={“任务名称”,“日期时间”};
int to[]={R.id.lbl_task,R.id.lbl_datetime};
c=database.query(“contacts”,columnsone,null,null,null,null);
status=c.getCount();
如果(状态==0)
{
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(ctx);
//定名
alertDialogBuilder.setTitle(“未创建任何任务!!”);
//设置对话框消息
alertDialogBuilder
.setMessage(“单击取消退出!”)
.setCancelable(错误)
.setNegativeButton(
“癌症”,
新建DialogInterface.OnClickListener()
{
public void onClick(DialogInterface对话框,int-id){
//如果单击此按钮,只需关闭
//打开对话框,不执行任何操作
dialog.cancel();
myintent=新意图(更新页面this,MainActivity.class);
星触觉(myintent);
}
});
//创建警报对话框
AlertDialog AlertDialog=alertDialogBuilder.create();
//表现出来
alertDialog.show();
}
其他的
{
Toast.makeText(getApplicationContext(),“记录在courser中可用”,1500).show();
如果(c!=null)
{
Toast.makeText(getApplicationContext(),“in-courser”,1500.show();
SimpleCorsorAdapter适配器=新
SimpleCursorAdapter(this.ctx,R.layout.update_listview,c,columnstwo,to);
Toast.makeText(getApplicationContext(),“记录在列表中”,1500).show();
setAdapter(适配器);
}
}
更新_list.xml
更新_listview.xml
您需要一个名为_id的列。在您的代码中,将您的id列更改为_id。有关类似的帖子,请参阅。另请参阅Android文档中的“”
public class update_page extends Activity
{
DatabaseHandler db = new DatabaseHandler(this);
public String tableName = db.TABLE_CONTACTS;
public String databaseName = db.DATABASE_NAME;
public String task_name = db.KEY_TASK;
public String dt = db.KEY_DATETIME;
private ArrayList<String> results = new ArrayList<String>();
private ArrayList<String> results2 = new ArrayList<String>();
Intent op_intent;
SQLiteDatabase database;
ListView myview;
Cursor c;
String o_name,o_no1;
//String o_id1 = null;
HttpClient client;
Integer op_id,status;
String url;
Context ctx;
Intent myintent;
final MainActivity act = new MainActivity();
public void onCreate(Bundle savedInstanceState)
{
ctx = this;
database = act.getInstance().openOrCreateDatabase("contactsManager",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
Toast.makeText(getApplicationContext(), "Database is open", 1500).show();
final String[] columnsone = {"id", "task_name", "date_time"};
String[] columnstwo = {"task_name", "date_time"};
int to[] = {R.id.lbl_task,R.id.lbl_datetime};
c = database.query("contacts", columnsone, null, null, null, null, null);
status = c.getCount();
if (status == 0)
{
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx);
// Set title
alertDialogBuilder.setTitle("No task are created !!");
// Set dialog message
alertDialogBuilder
.setMessage("Click cancle to exit!")
.setCancelable(false)
.setNegativeButton(
"Cancle",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id) {
// If this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
myintent = new Intent(update_page.this,MainActivity.class);
startActivity(myintent);
}
});
// Create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// Show it
alertDialog.show();
}
else
{
Toast.makeText(getApplicationContext(), "records are available in courser", 1500).show();
if (c != null)
{
Toast.makeText(getApplicationContext(), "in courser", 1500).show();
SimpleCursorAdapter adapter = new
SimpleCursorAdapter(this.ctx,R.layout.update_listview, c, columnstwo, to);
Toast.makeText(getApplicationContext(), "records are in list", 1500).show();
myview.setAdapter(adapter);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<!-- <ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#404040"
android:fillViewport="true" > -->
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.68"
android:divider="#000000"
android:dividerHeight="2dp"
android:background="#404040">
</ListView>
<!-- </ScrollView> -->
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/lbl_task"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Medium Text"
android:textColor="#1E90FF"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/lbl_datetime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="3dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>