Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 列表不能完美地从数据库中删除数据_Android_List - Fatal编程技术网

Android 列表不能完美地从数据库中删除数据

Android 列表不能完美地从数据库中删除数据,android,list,Android,List,我是android新手。我想将插入的数据从数据库显示到表中。我使用列表获取数据 public List<user> getAllUsers() { List<user> users = new ArrayList<user>(); Cursor cursor = database.query(SqlLiteHelper.TABLE_USER, allColumns, null, null, null, null, null); c

我是android新手。我想将插入的数据从数据库显示到表中。我使用列表获取数据

 public List<user> getAllUsers() {
    List<user> users = new ArrayList<user>();

    Cursor cursor = database.query(SqlLiteHelper.TABLE_USER, allColumns, null, null, null, null, null);

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
      user varUser = cursorToUser(cursor);

      //Log.v("user name",varUser.getName().toString());

      users.add(varUser);
      cursor.moveToNext();
    }
    //Log.v("user name",users.get(0).getName().toString());

    cursor.close();
    return users;
  }



   private user cursorToUser(Cursor cursor) {
    user varUser = new user();

    //Log.v("user id", cursor.getString(1).toString());

    varUser.setID(cursor.getLong(0));
    varUser.setName(cursor.getString(1));
    varUser.setPhone(cursor.getString(2));
    varUser.setEmail(cursor.getString(3));
    return varUser;
}
公共列表getAllUsers(){
列表用户=新建ArrayList();
Cursor Cursor=database.query(sqlliteheloper.TABLE_USER,allColumns,null,null,null,null);
cursor.moveToFirst();
而(!cursor.isAfterLast()){
user varUser=cursorToUser(游标);
//Log.v(“用户名”,varUser.getName().toString());
添加(varUser);
cursor.moveToNext();
}
//Log.v(“用户名”,users.get(0.getName().toString());
cursor.close();
返回用户;
}
专用用户游标游标(游标游标){
user varUser=新用户();
//Log.v(“用户id”,cursor.getString(1.toString());
setID(cursor.getLong(0));
setName(cursor.getString(1));
setPhone(cursor.getString(2));
setEmail(cursor.getString(3));
返回varUser;
}
我在UserDataSource.java上编写了这段代码

然后,在我需要显示这些数据的地方,我使用以下代码

       databaseSource = new UserDataSource(this);
    databaseSource.open();

    List<user> values = databaseSource.getAllUsers();
    Log.v("information", values.get(0).getName().toString());
    ArrayAdapter<user> adapter = new ArrayAdapter<user>(this, android.R.layout.simple_list_item_1, values);
    setListAdapter(adapter);  
databaseSource=新的UserDataSource(这个);
databaseSource.open();
列表值=databaseSource.getAllUsers();
Log.v(“信息”,values.get(0.getName().toString());
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1的值);
setListAdapter(适配器);
这不是在列表中添加值。我使用log.v检查数据是否返回。我发现数据完全来自数据库。只有当我试图打印列表或将其插入到简单列表项1时,它才解决了问题

它正在印刷

给定的,给定的。user@41221338

但是它假设从数据库打印名称

数据库表名为user

请让我知道我错过了什么

这是我试图添加这些列表的布局xml文件

<?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" >


<Button
    android:id="@+id/all_user_back"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:text="Back" />



    <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="384dp" >
</ListView>




</LinearLayout>


如果您的列表显示
com.example.given\u n\u。user@41221338
这意味着您在
user
类中缺少
toString
方法。实现一个返回用户名称的
toString

这是因为ArrayAdapter调用用户对象的toString()方法。您必须实现to toString()方法,或者如果您想在列表中显示多个字符串,则必须编写自己的适配器。

您得到的结果是错误的,因为

Log.v("information", values.get(0).getName().toString());

values.get(0)
将返回类User,该类User由name、id、phone no等值组成,并返回您调用的access name方法,该方法非常完美。但对于适配器,您直接传递
列表值。所以,当适配器从中提取数据时,它将从中提取类User,而不是不同的值。因此,要访问值,您必须获取列表的定位值,提取值name、id等,然后将其传递给适配器;方法do?函数corsorToUser(游标)用于创建一个用户类的对象,其中包含检索数据。我正在将对象列表保存到列表中,我们需要查看您的用户类和cursorToUser()方法。我能想到的唯一一件事是,不知何故,您将错误的列映射到了getName()。。请更新我已经在我的问题中添加了函数代码。顺便说一句,我找到了解决办法。还有一件事我就是不明白。为什么我的问题变成-1。我的意思是,我在这个问题上遗漏了什么吗?我不能回答这个问题,对我来说,这个问题看起来还行。现在我连一个问题都不能问了无论如何,兄弟,非常感谢你的解决方案。