Re: Урок 34. Хранение данных. SQLite
Добавлено: 21 апр 2014, 20:21
Принцип понятен, но в логе не нашел Caused by. Буду искать дальше, явно что то не то делаю. Но в общем спс.
Добро пожаловать на форум сайта
http://forum.startandroid.ru/
Вынеси реализацию SQLiteOpenHelper в отдельный классpolev писал(а):Если мое приложение использует базу данных в нескольких активити, как создать одно подключение к базе, которое я смогу использовать с любого места? Сейчас я создаю и закрываю подключение к базе в каждом новом активити, но понимаю, что это не есть хорошо.
Код: Выделить всё
package com.scherlokholmes.manekineko;
import java.util.ArrayList;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
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.scherlokholmes.dbhelper.ExternalDbOpenHelper;
public class DishesActivity extends ListActivity {
private static final String DB_NAME = "manekineko_rus.sqlite3";
private SQLiteDatabase database;
private ListView listView;
private ArrayList<String> NamesDisches;
String text_from_category = "textaa";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dishes);
TextView txtInfo = (TextView)findViewById(R.id.text_dishes);
text_from_category = getIntent().getExtras().getString("text_from_category");
txtInfo.setText(text_from_category);
//
ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
database = dbOpenHelper.openDataBase();
//
fillNamesDishes();
setUpList();
}
private void fillNamesDishes() {
NamesDisches = new ArrayList<String>();
String[] selectionArgs={text_from_category};
Cursor DishesNamesCursor = database.query
("Dishes as DIS inner join Category as CAT on DIS.id_category=CAT._id",
new String[] {"DIS.name", "DIS.cost","DIS.weight","DIS.image",
"DIS.quantity","DIS.description"},
"CAT.name=?",
selectionArgs,
null,
null,
null);
DishesNamesCursor.moveToFirst();
if(!DishesNamesCursor.isAfterLast()) {
do {
String name = DishesNamesCursor.getString(0);
NamesDisches.add(name);
} while (DishesNamesCursor.moveToNext());
}
DishesNamesCursor.close();
}
private void setUpList() {
//
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, NamesDisches));
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();
//Intent intent=new Intent(CategoryActivity.this,DishesActivity.class);
//intent.putExtra("text_from_category", ((TextView) view).getText().toString());
//startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.dishes, menu);
return true;
}
}
Код: Выделить всё
<?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:background="@drawable/back_other"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/text_dishes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:text="any text"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
</LinearLayout>