#android #android-sqlite
#Android #android-sqlite
Вопрос:
Пожалуйста, мне нужна помощь с этим приложением. Я хочу встроить базу данных в приложение для Android. В моей таблице 3 столбца (_id, заголовок, текст). Первая страница приложения показывает заголовки в виде списка, но я хочу показывать текст в другом действии, когда вы щелкаете по элементу в списке. Вот как мы зашли так далеко. (Я нашел этот проект в Интернете и изменил его.)
package com.softeq.prepopdb.activity;
import java.util.ArrayList;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.softeq.android.prepopdb.R;
import com.softeq.prepopdb.dbhelper.ExternalDbOpenHelper;
public class PrepopSqliteDbActivity extends ListActivity {
private static final String DB_NAME = "schymn.sqlite";
private static final String TABLE_NAME = "Hymns";
private static final String Hymn_ID = "_id";
private static final String Hymn_Title = "Title";
private static final String Hymn_Text = "Text";
String lyrics;
private SQLiteDatabase database;
private ListView listView;
private ArrayList<String> Songs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
database = dbOpenHelper.openDataBase();
fillHymns();
setUpList();
}
private void setUpList() {
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Songs));
listView = getListView();
/*listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position,long id) {
Toast.makeText(getApplicationContext(),
((TextView) view).getText().toString(),
Toast.LENGTH_SHORT).show();
}
});*/
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position,long id) {
}
});
}
private void fillHymns() {
Songs = new ArrayList<String>();
Cursor hymnCursor = database.query(TABLE_NAME,
new String[]
{Hymn_ID, Hymn_Title,Hymn_Text},
null, null, null, null
, Hymn_Title);
hymnCursor.moveToFirst();
if(!hymnCursor.isAfterLast()) {
do {
String title = hymnCursor.getString(1);
lyrics = hymnCursor.getString(2);
Songs.add(title);
//Songs.add(lyrics);
} while (hymnCursor.moveToNext());
}
hymnCursor.close();
}
}
Я пробовал это, но это не сработало.
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position,long id) {
Log.i("text",lyrics);
}
});
}
Комментарии:
1.
Log.i("text",lyrics)
Предполагается ли создать другое действие? Взгляните наstartActivity
методы.2. нет, предполагается, что для регистрации текста, связанного с заголовком. Я знаю, как передавать дополнительные данные в intent.
3. Получаете ли вы какое-либо исключение? В вашем журнале что-нибудь записывается?
4. Да, она регистрируется, но один и тот же элемент снова и снова.
Ответ №1:
Спасибо, ребята, я смог решить проблему, создав адаптер и сохранив детали в парах ключ-значение.