2014-08-27 3 views
0

У меня есть 3 класса и DBОтображение данных из базы данных в ListView на андроид

1.class MainActivity

public class MainActivity extends ListActivity { 
    private static final String DB_NAME = "sajgo_v1"; 
    private static final String TABLE_NAME = "PREHRANA"; 
    private static final String PREHRANA_ID = "_id"; 
    private static final String NAZIV_PREHRANE = "naziv_prehrane"; 

    private SQLiteDatabase database; 
    private ListView listView; 
    private ArrayList<String> prehrana; 


    public static final String ID_EXTRA="naziv_prehrane"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME); 
     database = dbOpenHelper.openDataBase(); 

     fillPrehrana(); 
     setUpList();  
    } 

    private void setUpList() { 

     setListAdapter(new ArrayAdapter<String>(this, 
         android.R.layout.simple_list_item_1, prehrana)); 
     listView = getListView(); 


     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
           int position,long id) { 
     Intent i = new Intent (MainActivity.this, Jelovnik.class); 
     i.putExtra(ID_EXTRA, String.valueOf(id)); 
     startActivity(i); 
      } 
     }); 
    } 

    private void fillPrehrana() { 
     prehrana = new ArrayList<String>(); 
     Cursor prehranaCursor = database.query(TABLE_NAME, 
              new String[] 
              {PREHRANA_ID, NAZIV_PREHRANE}, 
              null, null, null, null 
              , null); 
     prehranaCursor.moveToFirst(); 
     if(!prehranaCursor.isAfterLast()) { 
      do { 
       String name = prehranaCursor.getString(1); 
       prehrana.add(name); 
      } while (prehranaCursor.moveToNext()); 
     } 
     prehranaCursor.close(); 
    } 

} 

2.Class Jelovnik

package com.prehrana; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Jelovnik extends Activity { 

    String passedVar=null; 
    private TextView passedView=null; 

    protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.jelovnik); 

    passedVar=getIntent().getStringExtra(MainActivity.ID_EXTRA); 

    passedView=(TextView)findViewById(R.id.passed); 

    passedView.setText("Kliknuli ste na " + passedVar); 
} 
} 

В этом классе, когда я нажимаю его показывает мне номер

3. Вспомогательный помощник кластера

общественного класса ExternalDbOpenHelper расширяет SQLiteOpenHelper {

public static String DB_PATH; 

    public static String DB_NAME; 
    public SQLiteDatabase database; 
    public final Context context; 

    public SQLiteDatabase getDb() { 
     return database; 
    } 

    public ExternalDbOpenHelper(Context context, String databaseName) { 
     super(context, databaseName, null, 1); 
     this.context = context; 

     String packageName = context.getPackageName(); 
     DB_PATH = String.format("//data//data//%s//databases//", packageName); 
     DB_NAME = databaseName; 
     openDataBase(); 
    } 


    public void createDataBase() { 
     boolean dbExist = checkDataBase(); 
     if (!dbExist) { 
      this.getReadableDatabase(); 
      try { 
       copyDataBase(); 
      } catch (IOException e) { 
       Log.e(this.getClass().toString(), "Copying error"); 
       throw new Error("Error copying database!"); 
      } 
     } else { 
      Log.i(this.getClass().toString(), "Database already exists"); 
     } 
    } 

    private boolean checkDataBase() { 
     SQLiteDatabase checkDb = null; 
     try { 
      String path = DB_PATH + DB_NAME; 
      checkDb = SQLiteDatabase.openDatabase(path, null, 
        SQLiteDatabase.OPEN_READONLY); 
     } catch (SQLException e) { 
      Log.e(this.getClass().toString(), "Error while checking db"); 
     } 

     if (checkDb != null) { 
      checkDb.close(); 
     } 
     return checkDb != null; 
    } 


    private void copyDataBase() throws IOException { 

     InputStream externalDbStream = context.getAssets().open(DB_NAME); 


     String outFileName = DB_PATH + DB_NAME; 


     OutputStream localDbStream = new FileOutputStream(outFileName); 


     byte[] buffer = new byte[1024]; 
     int bytesRead; 
     while ((bytesRead = externalDbStream.read(buffer)) > 0) { 
      localDbStream.write(buffer, 0, bytesRead); 
     } 

     localDbStream.close(); 
     externalDbStream.close(); 

    } 

    public SQLiteDatabase openDataBase() throws SQLException { 
     String path = DB_PATH + DB_NAME; 
     if (database == null) { 
      createDataBase(); 
      database = SQLiteDatabase.openDatabase(path, null, 
       SQLiteDatabase.OPEN_READWRITE); 
     } 
     return database; 
    } 
    @Override 
    public synchronized void close() { 
     if (database != null) { 
      database.close(); 
     } 
     super.close(); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) {} 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} 
} 

Моя проблема

Я хочу вызвать данные из базы данных в ListView

ответ

1
//Create function in DB Class 
// To Retrive the data from database 
    public Cursor getdata(String table) 
    { 
     return sdb.rawQuery("select * from "+table+"", null); 
    } 

// IN the main Activity 
setContentView(R.layout.activity_main); 
     Mydb db=new MyDb(this); 
     db.open(); 
Cursor cursor=db.getdata(MyDb.T_Name); 
     if(cursor!=null) 
     { 
      while(cursor.moveToNext()) 
      { 
       String GetName=cursor.getString(cursor.getColumnIndex(MyDb.name)); 
       String GetAddress=cursor.getString(cursor.getColumnIndex(MyDb.address));  
       al.add(GetName +" "+ GetAddress); 

      ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,al); 
      lv_view.setAdapter(adapter); 

// if u still did not get answer thn u can mail me on: [email protected], i wil send u complete project 
Смежные вопросы