Передать информацию на основе id кнопки в другое activity( Android)
Делаю приложение, у которого имеется база данных с подробной информацией по каждому направлению курсов.
Нужно написать функцию, чтобы при нажатии на Button с названием курса открывалось Activity с подробной информацией об этом курсе, данные берутся из базы данных.
То есть, есть несколько кнопок с названием курсов, и при нажатии на любую должно открываться другое активити с более подробной информацией по выбранному направлению.
Можете подсказать, что тут надо поправить.
Класс с button. Тут передается id и запускается другое активити:
public class Timetable extends AppCompatActivity implements View.OnClickListener {
Button buttonOne;
Button buttonToo;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timetable);
buttonOne = findViewById(R.id.b_one);
buttonToo = findViewById(R.id.b_too);
buttonOne.setOnClickListener(this);
buttonToo.setOnClickListener(this);
}
@Override
public void onClick(View view) {
long ID = 0;
{
switch (view.getId()) {
case R.id.b_one:
ID = 1;
break;
case R.id.b_too:
ID = 2;
break;
}
Context context = Timetable.this;
Intent intent = new Intent(context, About_direction.class);
intent.putExtra("ID", ID);
startActivity(intent);
}
}
Класс с подробным описанием. Получает id и присваивает компонентам данные
public class About_direction extends AppCompatActivity {
TextView name;
ImageView img;
TextView desc;
DatabaseHelper dbHelper;
SQLiteDatabase db;
Cursor userCursor;
SimpleCursorAdapter userAdapter;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_direction);
name = findViewById(R.id.name);
img = findViewById(R.id.img_name);
desc = findViewById(R.id.tv_description);
dbHelper = new DatabaseHelper(this);
db = dbHelper.getReadableDatabase();
long ID = getIntent().getLongExtra("ID", 0);
userCursor = db.rawQuery("select * FROM" + DatabaseHelper.TABLE + "WHERE" +
DatabaseHelper.COLUMN_ID + "=?", new String[]{String.valueOf(ID)});
userCursor.moveToFirst();
name.setText(userCursor.getString(1));
desc.setText(userCursor.getString(3));
userCursor.close();
}
}
Класс с БД добавляет записи в БД, а также идет выборка по id:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Info.db";
private static final int SCHEMA = 1;
public static final String TABLE = "courses";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_IMG = "img";
public static final String COLUMN_DESC = "description";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE courses (" + COLUMN_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME
+ " TEXT, " + COLUMN_DESC + " TEXT, " + COLUMN_IMG + " TEXT);");
db.execSQL("INSERT INTO "+ TABLE +" (" + COLUMN_NAME
+ ", " + COLUMN_IMG
+ ", " + COLUMN_DESC + ") VALUES ('Робототехника', 'img', 'описание' );");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE);
onCreate(db);
}
private SQLiteDatabase mDB;
@SuppressLint("Range")
public Courses getFromID(Long id) {
Cursor cursor = mDB.query(TABLE, null, COLUMN_ID + "=?", new String[]{String.valueOf(id)}, null, null, null);
Courses courses = null;
if (cursor.moveToFirst()) {
courses = new Courses(cursor.getLong(cursor.getColumnIndex(COLUMN_ID)),
cursor.getString(cursor.getColumnIndex(COLUMN_NAME)),
cursor.getString(cursor.getColumnIndex(COLUMN_IMG)),
cursor.getString(cursor.getColumnIndex(COLUMN_DESC)));
}
cursor.close();
return courses;
}
}