【发布时间】:2017-04-26 15:37:42
【问题描述】:
我正在制作一个使用 sqlite 数据库生成随机值的应用程序,但它没有给出值。即使没有显示添加的记录,它也始终显示空白活动。这是我的代码。我想在 ListView 中显示一些随机数据。
我有另一个类用于插入数据,并且有一个显示数据的按钮和一个调用生成一些随机数据的 Activity 的函数,但该 Activity 无法正常工作
导入android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class ViewPeople extends AppCompatActivity {
private static final String SELECT_SQL = "SELECT * FROM persons";
private Cursor mCurRandom;
private SQLiteDatabase db;
private Cursor c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_people);
openDatabase();
c = db.rawQuery(SELECT_SQL, null);
c.moveToFirst();
showRecords();
}
protected void openDatabase() {
db = openOrCreateDatabase("PersonDB", Context.MODE_PRIVATE, null);
}
protected void showRecords() {
try {
String sql = "SELECT * FROM persons ORDER BY RANDOM() LIMIT 1";
mCurRandom = db.rawQuery(sql, null);
if (mCurRandom != null) {
mCurRandom.moveToNext();
return;
}
{
showRecords();
}
} catch (SQLException mSQLException) {
throw mSQLException;
}
return;
}
}
我的布局是
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".ViewPeople">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"
android:id="@+id/textViewName" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
</ListView>
</LinearLayout>
【问题讨论】:
-
“但是那个 Activity 不能正常工作” - 你能告诉我们这意味着什么吗?它在哪些方面无法正常工作?
-
它甚至没有显示所有添加到数据库中的记录
-
您需要通过适配器填充 ListView。也许是 SimpleCursorAdapter 或自定义适配器。还要注意答案逻辑错误和 showRecords 调用自身。看看这个Android: Using SimpleCursorAdapter to get Data from Database to ListView。但是,您只会获得 1 条记录(除非您更改限制),因此不需要具有 LIMIT 1 的 ListView。
标签: android sqlite listview android-sqlite random-data