在列表视图上显示表列

时间:2014-09-17 01:24:42

标签: android

我正在实现一个从在线mysql获取数据的应用程序,并在mysql lite表中存储包含2列

  

通知

     

日期

我想在列表视图中显示通知列,在右侧显示相关日期列

我得到了什么

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".ListActivity" >

   <ListView
      android:id="@+id/mobile_list"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
   </ListView>

</LinearLayout>

MainActivity.java

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ArrayAdapter adapter = new ArrayAdapter<String>(this, 
         R.layout.activity_listview, mobileArray);

      ListView listView = (ListView) findViewById(R.id.mobile_list);
      listView.setAdapter(adapter);
   }

1 个答案:

答案 0 :(得分:1)

这样做:

  1. DatabaseHelper.java 类:只需在路径和dbname中更改包名称。

      package Your package name;
    
     import java.io.FileOutputStream;
     import java.io.IOException;
     import java.io.InputStream;
     import java.io.OutputStream;
    
     import android.content.Context;
     import android.database.SQLException;
     import android.database.sqlite.SQLiteDatabase;
     import android.database.sqlite.SQLiteException;
     import android.database.sqlite.SQLiteOpenHelper;
    
    
    public class DataBaseHelper extends SQLiteOpenHelper{
    
      //The Android's default system path of your application database.
    private static String DB_PATH = "/data/data/your package name/databases/";
    
     private static String DB_NAME = " your database name";
    
     private SQLiteDatabase myDataBase; 
    
     private final Context myContext;
    
       /**
      * Constructor
          * Takes and keeps a reference of the passed context in order to access to the application assets and resources.
      * @param context
      */
         public DataBaseHelper(Context context) {
    
        super(context, DB_NAME, null, 1);
         this.myContext = context;
    }   
    
           /**
             * Creates a empty database on the system and rewrites it with your own database.
          * */
           public void createDataBase() throws IOException{
    
          boolean dbExist = checkDataBase();
    
         if(dbExist){
            //do nothing - database already exist
        //  Toast.makeText(myContext, "already exist", Toast.LENGTH_LONG).show();
         else{
    
                //By calling this method and empty database will be created into the default system path
               //of your application so we are gonna be able to overwrite that database with our database.
                this.getReadableDatabase();
    
        try {
    
            copyDataBase();
    
        } catch (IOException e) {
    
            //throw new Error("Error copying database");
    
        }
    }
    
     }
    
        /**
           * Check if the database already exist to avoid re-copying the file each time you open the application.
       * @return true if it exists, false if it doesn't
       */
        private boolean checkDataBase(){
    
        SQLiteDatabase checkDB = null;
    
          try{
                String myPath = DB_PATH + DB_NAME;
           checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    //  Toast.makeText(myContext, "already exist", Toast.LENGTH_LONG).show();
    }catch(SQLiteException e){
    
        //database does't exist yet.
        //Toast.makeText(myContext, "not already exist", Toast.LENGTH_LONG).show();
    }
    
    if(checkDB != null){
    
        checkDB.close();
    
      }
    
      return checkDB != null ? true : false;
     }
    
       /**
       * Copies your database from your local assets-folder to the just created empty database in the
       * system folder, from where it can be accessed and handled.
       * This is done by transfering bytestream.
       * */
      private void copyDataBase() throws IOException{
    
        //Open your local db as the input stream
        InputStream myInput = myContext.getAssets().open(DB_NAME);
    
         // Path to the just created empty db
          String outFileName = DB_PATH + DB_NAME;
    
    //Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);
    
    //transfer bytes from the Input file to the output file
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer))>0){
        myOutput.write(buffer, 0, length);
    }
    
    //Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();
    
    }
    
     public void openDataBase() throws SQLException{
    
    //Open the database
    String myPath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    
    }
    
     @Override
      public synchronized void close() {
    
        if(myDataBase != null)
            myDataBase.close();
    
        super.close();
    
     }
    
    @Override
    public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub
    
     }
    
    @Override
     public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
     // TODO Auto-generated method stub
    
    }
    
    
    
      // Add your public helper methods to access and get content from the database.
      // You could return cursors by doing "return myDataBase.query(....)" so it'd be easy
       // to you to create adapters for your views.
    
     }
    
    1. 您的 MainActivity.java :选择方法从数据库中选择网址;

        public void select()
      {
      //this is select command code
       //--------------------------------------------------
        DataBaseHelper myDbHelper = new DataBaseHelper(getApplicationContext());
      
        try 
        {
       myDbHelper.createDataBase(); 
       } catch (IOException ioe ) {
        throw new Error("Unable to create database");
      
      
       }
        database = this.openOrCreateDatabase("your database name", MODE_PRIVATE, null); 
        Cursor crs;
        crs= database.rawQuery("select * from tablename ", null);
       while(crs.moveToNext())
       {
         array.add(crs.getString(index of column));
        // example  : array.add(crs.getString(1));
         level = crs.getInt(4);
         System.out.println("=="+level);
      
            }
      crs.close();
      database.close();
      }
      
  2. 现在调用oncreate中的Select Method并设置List adapter;

               Select();
              list.setAdapter(new ArrayAdapter(getapplicationContext,android.R.layout.simple_list_item_1,array));
    

    这是从数据库中选择数据的全部内容。 希望这会对你有所帮助。

相关问题