对不起,如果这个问题之前已经得到解答,但我刚开始在android studio中编程,似乎无法找到解决方案。
我目前有一个包含来自sqlite数据库的数据的列表视图,我一直在尝试做的是单击listview中的一个项目,该项目应该与另一个活动连接,显示从sqlite数据库中检索到的特定项目的详细信息(以多个编辑方式构建)文本)。我还想实现一个“登录”按钮,这样当按下一个数据值时会减少一个(包含它的edittext也是如此)。
我再次感到抱歉,如果它是一个愚蠢的问题,但我一直在寻找整个周末的解决方案,并且我已经没时间了。
这是我的数据库助手代码
public class BaseHelper extends SQLiteOpenHelper {
String tabla="CREATE TABLE EVENTO(ID INTEGER PRIMARY KEY, NOMBRE TEXT, FECHA TEXT, HORA TEXT, CUPOS INTEGER, DESCRIPCION TEXT)";
public BaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(tabla);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Evento");
db.execSQL(tabla);
}
}
我的主动活动
public class MainActivity extends AppCompatActivity {
EditText ET_nombre, ET_fecha, ET_hora, ET_cupos, ET_descripcion;
Button bt_guardar, bt_mostrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ET_nombre = (EditText) findViewById(R.id.ET_nombre);
ET_fecha = (EditText) findViewById(R.id.ET_fecha);
ET_hora = (EditText) findViewById(R.id.ET_hora);
ET_cupos = (EditText) findViewById(R.id.ET_cupos);
ET_descripcion = (EditText) findViewById(R.id.ET_descripcion);
bt_guardar = (Button) findViewById(R.id.bt_guardar);
bt_mostrar = (Button) findViewById(R.id.bt_mostrar);
bt_guardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
guardar(ET_nombre.getText().toString(),ET_fecha.getText().toString(),
ET_hora.getText().toString(),Integer.parseInt(ET_cupos.getText().toString()),
ET_descripcion.getText().toString());
}
});
bt_mostrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, agenda.class));
}
});
}
private void guardar(String Nombre, String Fecha, String Hora, int Cupos, String Descripcion) {
BaseHelper helper = new BaseHelper(this, "eventos", null, 1);
SQLiteDatabase db = helper.getWritableDatabase();
try{
ContentValues c = new ContentValues();
c.put("Nombre", Nombre);
c.put("Fecha", Fecha);
c.put("Hora", Hora);
c.put("Cupos", Cupos);
c.put("Descripcion", Descripcion);
if (ET_nombre.length() > 0 && ET_fecha.length() > 0 && ET_hora.length() > 0 && ET_cupos.length() > 0) {
db.insert("EVENTO",null,c);
db.close();
Toast.makeText(this, "Evento registrado", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "llena todas las casillas", Toast.LENGTH_LONG).show();
}
}catch (Exception e) {
Toast.makeText(this, "Error:" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
我在listview中显示SQLite数据的活动
public class agenda extends AppCompatActivity {
ListView listView;
ArrayList<String> listado;
@Override
protected void onPostResume() {
super.onPostResume();
Cargar();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_agenda);
listView = (ListView) findViewById(R.id.listView);
Cargar();
if (getSupportActionBar()!=null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
private void Cargar() {
listado = Listado();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listado);
listView.setAdapter(adapter);
}
private ArrayList<String> Listado() {
ArrayList<String> datos = new ArrayList<String>();
BaseHelper helper = new BaseHelper(this, "eventos", null, 1);
SQLiteDatabase db = helper.getReadableDatabase();
String sql = "select Id, Nombre from Evento";
Cursor c = db.rawQuery(sql,null);
if(c.moveToFirst()) {
do {
String linea = c.getInt(0) +") "+ c.getString(1);
datos.add(linea);
}while(c.moveToNext());
}
db.close();
return datos;
}
}