В моем приложении есть задача, которую я хочу выполнить, это получение идентификаторов элементов из моей базы данных sqlite с использованием созданного мной Model.class
, и я хочу использовать идентификаторы, полученные внутри действия, а не адаптера на этот раз, но я знаю только как сделать это с помощью адаптера. Хотя я собираюсь попробовать это в первый раз, и я даже не знаю, возможно ли это.
Это код, который я пробовал
private ViewPager mViewPager;
ArrayList<Model> modelArrayList;
ArrayList<String>listItem;
RecyclerView recyclerView;
SongAdapter adapter;
int id = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
listItem = new ArrayList<>();
SQLiteDbHelper dbHelper = new SQLiteDbHelper(this);
dbHelper.openDatabase();
modelArrayList = dbHelper.getDetails();
adapter = new SongAdapter(modelArrayList);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_search){
Intent intent = new Intent(MainActivity.this,SearchActivity.class);
startActivity(intent);
}
if (item.getItemId() == R.id.lacate){
goToChapter();
}
if (item.getItemId() == R.id.locate){
Intent intent = new Intent(MainActivity.this,ChaptersActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
private void goToChapter() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this,R.style.AlertDialog);
builder.setTitle("Enter Here :");
final EditText goTo = new EditText(MainActivity.this);
goTo.setHint("input number");
builder.setView(goTo);
builder.setPositiveButton("GO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String locate = goTo.getText().toString();
if (!TextUtils.isEmpty(locate) ){
if (!locate.equals(String.valueOf(modelArrayList.get(id).getChapter()))) {
Toast.makeText(MainActivity.this,"bad",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this,"good",Toast.LENGTH_LONG).show();
}
}
}
});
builder.show();
}
SQLiteDbHelper.class
private static final int DATABASE_VERSION =1;
private static final String DATABASE_NAME = "FTChyme.sqlite";
private static final String DB_PATH_SUFFIX = "/databases/";
static Context mCtx;
SQLiteDbHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
mCtx = context;
}
public SQLiteDatabase openDatabase() throws SQLiteException{
File dbFile = mCtx.getDatabasePath(DATABASE_NAME);
if (!dbFile.exists()){
try {
CopyDatabaseFromAssests();
Toast.makeText(mCtx,"copied from assest",Toast.LENGTH_LONG).show();
}catch (IOException e){
throw new RuntimeException("error occured",e);
}
}
return SQLiteDatabase.openDatabase(dbFile.getPath(),null,SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase
.CREATE_IF_NECESSARY);
}
public ArrayList<Model> getDetails(){
SQLiteDatabase db = this.getReadableDatabase();
ArrayList<Model> modelList = new ArrayList<>();
Cursor cursor = db.rawQuery("SELECT * FROM hymes",null);
if (cursor!=null){
while (cursor.moveToNext()){
Model count = new Model(cursor.getInt(0),cursor.getInt(1),cursor.getString(1),cursor.getString(2));
modelList.add(count);
}
cursor.close();
db.close();
}
return modelList;
}
public ArrayList<Model> getChapter(){
SQLiteDatabase db = this.getReadableDatabase();
ArrayList<Model> modelList = new ArrayList<>();
Cursor cursor = db.rawQuery("SELECT * FROM hymes",null);
if (cursor!=null){
while (cursor.moveToNext()){
Model count = new Model(cursor.getInt(0),cursor.getInt(1),cursor.getString(1),cursor.getString(2));
modelList.add(count);
}
cursor.close();
db.close();
}
return modelList;
}
public void CopyDatabaseFromAssests() throws IOException{
InputStream myInput = mCtx.getAssets().open(DATABASE_NAME);
String outFile = getDatabasePath();
File f = new File(mCtx.getApplicationInfo().dataDir + DB_PATH_SUFFIX);
if (!f.exists())
f.mkdir();
OutputStream myOutPut = new FileOutputStream(outFile);
byte[] buffer = new byte[1024];
int lenght;
while ((lenght = myInput.read(buffer))>0){
myOutPut.write(buffer,0,lenght);
}
myOutPut.flush();
myOutPut.close();
myInput.close();
}
private static String getDatabasePath() {
return mCtx.getApplicationInfo().dataDir + DB_PATH_SUFFIX
+ DATABASE_NAME;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
но идентификатор зарегистрирован только на нулевое значение и ничего не извлекает из базы данных