'Problem in listview, sqlite database in asset folder
App is abruptly crashing please help
package com.hss.raagmalahcm.database;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.hss.raagmalahcm.allragasview.modelforallview;
import java.util.ArrayList;
public class MyDBHandler extends SQLiteOpenHelper {
public static String DBNAME;
public static String TABLE_NAME;
public static final String DATABASE_LOC ="/data/data"+DBAccess.context.getPackageName()+"/databases/";
private Context mcontext;
private SQLiteDatabase mDatabase;
public MyDBHandler(Context context, String DBname) {
super(context, DBNAME, null, 1);
DBNAME = DBname+".db";
TABLE_NAME = "RaagDetails";
mcontext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
//
}
public void OpenDatabase(){
String DBPath = mcontext.getDatabasePath(DBNAME).getPath();
if(mDatabase!=null && mDatabase.isOpen()){
return;
}
mDatabase=SQLiteDatabase.openDatabase(DBPath,null,SQLiteDatabase.OPEN_READWRITE);
}
public void CloseDatabase(){
if(mDatabase!=null){
mDatabase.close();
}
}
public ArrayList<modelforallview> getAllRagas()
{
modelforallview mfav = null;
ArrayList<modelforallview> modelforallviewArrayList = new ArrayList<modelforallview>();
OpenDatabase();
Cursor cursor = mDatabase.rawQuery("select * from"+TABLE_NAME,null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
mfav = new modelforallview(cursor.getString(1));
modelforallviewArrayList.add(mfav);
}
cursor.close();
CloseDatabase();
return modelforallviewArrayList;
}
}
DBAccess.java This is Dabatase inflator creating class
package com.hss.raagmalahcm.database;
import android.app.Application;
import android.content.Context;
import android.view.LayoutInflater;
public class DBAccess extends Application {
public static LayoutInflater inflater;
//@SuppressLint("StaticFieldLeak")
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
//context.getApplicationContext();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
}
modelforallview.java
model for layout resource file
package com.hss.raagmalahcm.allragasview;
public class modelforallview {
public String RaagName;
public String getRaagName() {
return RaagName;
}
public void setRaagName(String raagName) {
RaagName = raagName;
}
public modelforallview(String raagName) {
RaagName = raagName;
}
}
adapterforallview.java
this is adapter class for adapting data from db
package com.hss.raagmalahcm.allragasview;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.hss.raagmalahcm.R;
import com.hss.raagmalahcm.database.DBAccess;
import java.util.ArrayList;
public class adapterforallview extends ArrayAdapter<modelforallview> {
public adapterforallview(ArrayList<modelforallview> array) {
super(DBAccess.context, R.layout.alltemplate,array);
}
public static class ViewHolder {
public TextView allraagview;
public ViewHolder(View view) {
allraagview = view.findViewById(R.id.raagnamefetch);
}
public void fill(final ArrayAdapter<modelforallview> adapter, final modelforallview item, final int position) {
allraagview.setText(item.getRaagName());
}
}
@Override
public View getView(int position, View convertview, ViewGroup parent){
ViewHolder holder;
modelforallview item = getItem(position);
if(convertview== null){
convertview= DBAccess.inflater.inflate(R.layout.alltemplate,parent,false);
holder = new ViewHolder(convertview);
convertview.setTag(holder);
}
else{
holder = (ViewHolder) convertview.getTag();
}
holder.fill(this, item,position);
return convertview;
}
}
AllRagas.java
I have to print it heree
package com.hss.raagmalahcm.allragasview;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import com.hss.raagmalahcm.R;
import com.hss.raagmalahcm.database.MyDBHandler;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
public class AllRagas extends AppCompatActivity {
ArrayList<modelforallview> modelforallviewArrayList = new ArrayList<modelforallview>();
ArrayAdapter adapter;
// DBAccess db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_ragas);
ListView listallrag = findViewById(R.id.allragaslist);
MyDBHandler myDBHandler=new MyDBHandler(AllRagas.this, "RaagDB");
File database = getApplicationContext().getDatabasePath(MyDBHandler.DBNAME);
if(database.exists()==false){
myDBHandler.getReadableDatabase();
if(!copydatabase(AllRagas.this)){
return;
}
}
//here
modelforallviewArrayList = myDBHandler .getAllRagas();
adapter = new adapterforallview(modelforallviewArrayList);
adapter.notifyDataSetChanged();
listallrag.setAdapter(adapter);
}
public Boolean copydatabase(Context context){
try {
InputStream inputStream = context.getAssets().open(MyDBHandler.DBNAME);
String OutFileName = MyDBHandler.DATABASE_LOC+MyDBHandler.DBNAME;
File f = new File(OutFileName);
f.getParentFile().mkdir();
OutputStream outputStream = new FileOutputStream(OutFileName);
byte[] buffer = new byte[1024];
int length = 0;
while((length = inputStream.read(buffer))>0){
outputStream.write(buffer, 0,length);
}
outputStream.flush();
outputStream.close();
return true;
}catch (IOException e){
return false;
}
}
}
I have created this by using a youtube link but i am confused why my app is not working
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
