В настоящее время я строю небольшое устройство для Android. На моей главной странице у меня есть счетчик, который заполняется «device_names» из моей базы данных SQLite.как получить определенные значения из базы данных SQLite (android) и отобразить в редактируемом текстовом виде
Когда пользователь выбирает нужное устройство, у него есть возможность обновить его информацию или удалить его.
Когда они выбирают обновление, они открывают новое действие с тремя текстовыми видами, именем устройства, номером устройства и паролем устройства. Здесь возникает моя проблема.
Я очень новичок в Java, и я не могу понять, как получить соответствующие значения из счетчика на предыдущей странице, чтобы заполнить три разных текстовых изображения, чтобы пользователь мог обмануть информацию.
Вот мой основной код деятельности:
package ben.findmyflock;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class DeviceManager extends Activity implements AdapterView.OnItemSelectedListener{
Spinner spinner;
private Button newActivity;
public final static String SELECTED_DEVICE = "ben.findmyflock.DEVICE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_manager);
spinner= (Spinner) findViewById(R.id.device_spinner);
/*ArrayAdapter adapter=ArrayAdapter.createFromResource(this,R.array.device_array,android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);*/
spinner.setOnItemSelectedListener(this);
loadSpinnerData();
}
/**
* Function to load the spinner data from SQLite database
* */
private void loadSpinnerData() {
// database handler
DeviceOperations db = new DeviceOperations(getApplicationContext());
// Spinner Drop down elements
List<String> labels = db.getAllLabels();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, labels);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
public void addNewDevice(View v) {
//do something when a button is clicked
Button adddevicebutton=(Button) v;
startActivity(new Intent(getApplicationContext(), AddDevice.class));
}
public void updateSelectedDevice(View v) {
Intent intent = new Intent(this, UpdateDevice.class);
Spinner spinner = (Spinner) findViewById(R.id.device_spinner);
String selecteddevice = spinner.getSelectedItem().toString();
intent.putExtra(SELECTED_DEVICE, selecteddevice);
startActivity(intent);
}
public void deleteSelectedDevice(View v) {
//delete selected spinner value from database
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_device_manager, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView myText= (TextView) view;
Toast.makeText(this,myText.getText() + " Selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
Вот мой Обновить код устройства:
package ben.findmyflock;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class UpdateDevice extends Activity {
ListView listview;
SQLiteDatabase sqLiteDatabse;
DeviceOperations deviceOperations;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_device);
Intent intent = getIntent();
String selecteddevice = intent.getStringExtra(DeviceManager.SELECTED_DEVICE);
EditText devname = (EditText)findViewById(R.id.update_device_name);
devname.setText(selecteddevice, TextView.BufferType.EDITABLE);
EditText devnum = (EditText)findViewById(R.id.update_device_number);
deviceOperations = new DeviceOperations(getApplicationContext());
sqLiteDatabse =deviceOperations.getReadableDatabase();
cursor = deviceOperations.getInformation(sqLiteDatabse);
if(cursor.moveToFirst())
{
do {
String name,num,pass;
name = cursor.getString(0);
num = cursor.getString(1);
pass = cursor.getString(2);
}while (cursor.moveToNext());
}
devnum.setText(selecteddevicenumber, TextView.BufferType.EDITABLE);
EditText devpass = (EditText)findViewById(R.id.update_device_password);
devpass.setText(selecteddevicepassword, TextView.BufferType.EDITABLE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_update_device, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
А вот мои операции устройства Файл
package ben.findmyflock;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Ben on 03/05/2015.
*/
public class DeviceOperations extends SQLiteOpenHelper{
// Database Version
public static final int database_version = 1;
// Database Name
public static final String DATABASE_NAME = "device_database";
// Labels table name
public static final String TABLE_NAME = "device_info";
// Labels Table Columns names
public static final String DEVICE_NAME = "device_name";
public static final String DEVICE_NUMBER = "device_number";
public static final String DEVICE_PASSWORD = "device_password";
private static final String[] COLUMNS = {DEVICE_NAME,DEVICE_NUMBER,DEVICE_PASSWORD};
public DeviceOperations(Context context) {
super(context, DATABASE_NAME, null, database_version);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
// Category table create query
String CREATE_DEVICE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + DEVICE_NAME + " TEXT," + DEVICE_NUMBER + " INTEGER" + DEVICE_PASSWORD + " TEXT)";
db.execSQL(CREATE_DEVICE_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
//Inserting values
public void putInformation(DeviceOperations dop,String name,String number,String pass)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DEVICE_PASSWORD, pass);
values.put(DEVICE_NUMBER, number);
values.put(DEVICE_NAME, name);
db.insert(TABLE_NAME, null, values);
db.close();
}
public Cursor getInformation(SQLiteDatabase db)
{
Cursor cursor;
String[] projections = {DEVICE_NAME, DEVICE_NUMBER, DEVICE_PASSWORD};
cursor = db.query(TABLE_NAME,projections,null,null,null,null,null);
return cursor;
}
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(0));
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning labels
return labels;
}
}
Я надеюсь, что это имеет смысл кому-то, поскольку я действительно не могу заставить его работать.
Я думаю, что простой поиск в базе данных для извлечения всех значений, соответствующих имени устройства, будет работать лучше всего, а затем преобразовать атрибут номера устройства в строку и пароль устройства в другую строку, я просто не могу работать, ,
Большое спасибо Бен
Привет, l Спасибо за ответ. То, что я искал, - это возможность выбора устройства в основном действии, а затем отсюда нажмите кнопку «Обновить выбранное устройство», которая приведет пользователя к устройству обновления Мероприятия. У меня этот бит работает, отсюда я просто хочу запустить запрос, который будет искать базу данных и найти строку, содержащую выбранное устройство, в столбце device_name, а затем получить два других значения: device_number и device_password, а также получить их и поместите их в строки, которые затем можно добавить к соответствующим редактируемым текстовым изображениям. надеюсь, что с помощью –
вы можете увидеть, как выглядит приложение в основном действии и активности устройства обновления здесь: http://i.imgur.com/uU03XXD.png и http://i.imgur.com/n14dXLK.png –
Ohhhh ok, поэтому вам нужен «простой» запрос к базе данных. Итак, вам нужен метод в вашем 'public class DeviceOperations extends SQLiteOpenHelper', который позволяет вам брать все записи, чтобы вы могли проверить правильное устройство и получить информацию ... теперь я перередактирую свой пост, чтобы я мог быть более ясным! – Mario