Я создаю приложение, в котором я использую базу данных sqlite для генерации случайных значений, но это не дает значения. Он всегда показывает пустое действие, даже не показывающее добавленную запись. Вот мой код. Я хочу отобразить некоторые случайные данные в ListView.Невозможно получить случайную форму данных SQLite
У меня есть еще один класс, с помощью которого я вставить данные и есть кнопка, чтобы показать данные и функцию для вызова активности, которая генерирует случайные данные, но активность не работает должным образом
импорта андроида. 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>
_ "но эта деятельность не работает должным образом" _ - Можете ли вы дать нам понять, что это значит? Каким образом он не работает должным образом? –
В нем ничего не отображается, даже не все записи, добавленные в базу данных. –
Вам нужно заполнить ListView через адаптер. Возможно, SimpleCursorAdapter или пользовательский адаптер. Также обратите внимание на логическую ошибку ответа и showRecords, вызывающую себя. Взгляните на это [Android: использование SimpleCursorAdapter для получения данных из базы данных в ListView] (http://stackoverflow.com/questions/12077955/android-using-simplecursoradapter-to-get-data-from-database-to-listview). Тем не менее, вы получите только 1 запись (если вы не измените лимит), поэтому нет необходимости в ListView с LIMIT 1. – MikeT