Загрузка данных в spinner из SQlite базы
Добавлено: 26 сен 2013, 16:17
Есть у меня 1 (одна) база с 2 таблицами:
1. _id,brand_name (таблица marks)
2. _id,brand_model,brandid (таблица models)
Сами spinner'ы располагаются на activity, которое вызывается из главного activity.
В первый spinner выводиться brand_name из таблицы marks, во второй spinner brand_model из таблицы models.
Вот код, где я пытаюсь загрузить в spinner данные
вот код, где я работаю с базой:
Я не много не понимаю в чём проблема.
Буду рад, если кто нибудь укажет мне где я ошибся.
Заранее благодарю
1. _id,brand_name (таблица marks)
2. _id,brand_model,brandid (таблица models)
Сами spinner'ы располагаются на activity, которое вызывается из главного activity.
В первый spinner выводиться brand_name из таблицы marks, во второй spinner brand_model из таблицы models.
Вот код, где я пытаюсь загрузить в spinner данные
Код: Выделить всё
package ru.auto.example;
import java.util.List;import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.provider.SyncStateContract.Constants;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MrMd extends Activity implements OnItemSelectedListener {
SQLiteDatabase auto;
Spinner spnMdl,spnMrk,spnYear;
EditText edtDtlMrMd, edtPhoneMrMd, edtDvgMrMd;
Button btnOrderMrMd;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mr_md);
// выпадающие списки
spnMdl = (Spinner) findViewById(R.id.spnMdl);
spnMrk = (Spinner) findViewById(R.id.spnMrk);
spnYear = (Spinner) findViewById(R.id.spnYear);
// текстовые поля
edtDtlMrMd = (EditText) findViewById(R.id.edtDtlMrMd);
edtPhoneMrMd = (EditText) findViewById(R.id.edtPhoneMrMd);
edtDvgMrMd = (EditText) findViewById(R.id.edtDvgMrMd);
// кнопка Заказать
btnOrderMrMd = (Button) findViewById(R.id.btnOrderMrMd);
//Установка слушателя для выпадающего списка
spnMdl.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
Toast.makeText(getBaseContext(), "Model", Toast.LENGTH_LONG).show();
} @Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
spnMrk.setOnItemSelectedListener(this);
spnYear.setOnItemSelectedListener(this);
loadSpinnerData();
// Создаем адаптер ArrayAdapter с помощью массива строк и стандартной разметки элемета spinner
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.year, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Применяем адаптер к элементу spinner
spnYear.setAdapter(adapter);
}
private void loadSpinnerData() {
// TODO Auto-generated method stub
AutoParts db = new AutoParts(getApplicationContext());
// Spinner Drop down elements
List<String> lables = db.getAllLabels();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lables);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spnMrk.setAdapter(dataAdapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
switch(parent.getId()){
case R.id.spnYear:
break;
case R.id.spnMrk:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}
Код: Выделить всё
package ru.auto.example;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class AutoParts extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "auto_parts.sqlite";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "marks";
// Labels Table Columns names
private static final String KEY_ID = "_id";
private static final String KEY_NAME = "brand_name";
public AutoParts(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
// Category table create query
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
}
public List<String> getAllLabels(){
List<String> labels = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
labels.add(cursor.getString(1));
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning lables
return labels;
}
}
Буду рад, если кто нибудь укажет мне где я ошибся.
Заранее благодарю