2014-04-21 162 views
-2

我在onCreate函數中用表(student)創建了一個數據庫(mydb),然後使用按鈕單擊動態輸入值。現在,我想要檢索所有數據從桌子上的學生點擊一個按鈕並將其顯示爲listview從SQLite數據庫中檢索數據並將其顯示到ListView中-android

public class MainActivity extends Activity   
     { 

     String name, phone; 
      SQLiteDatabase db; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       db=openOrCreateDatabase("mydb", MODE_PRIVATE, null); 
       db.execSQL("CREATE TABLE IF NOT EXISTS student(dbname VARCHAR, dbphone VARCHAR);"); 

      } 

      public void btnaddtodb(View v) 
      { 
       EditText edtxtname = (EditText)findViewById(R.id.edtxtname); 
       EditText edtxtphone = (EditText)findViewById(R.id.edtxtphone); 

       name=edtxtname.getText().toString(); 
       phone=edtxtphone.getText().toString(); 

       db.execSQL("INSERT INTO student values('"+name+"','"+phone+"');"); 

       edtxtname.setText(""); 
       edtxtphone.setText(""); 

       } 
      } 
+0

您是否嘗試過任何教程? – GrIsHu

+1

你到目前爲止做了什麼?什麼是麻煩/錯誤? –

+0

嘗試了一些.. BT變得困惑 – danish

回答

0

嘗試這樣做......它顯示所有表中的LinearLayout值作爲一個表

try{ 
     mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null); 
     Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE, null); 
     System.out.println("COUNT : " + allrows.getCount()); 
     Integer cindex = allrows.getColumnIndex("BOOK_DATE"); 
     Integer cindex1 = allrows.getColumnIndex("TRIP_DATE"); 
     Integer cindex2 = allrows.getColumnIndex("LOCATION"); 

     TextView t = new TextView(MybookingsActivity.this); 
     t.setText("========================================"); 
     //Linear.removeAllViews(); 
     Linear.addView(t); 

     if(allrows.moveToFirst()){ 
      do{ 
       LinearLayout id_row = new LinearLayout(MybookingsActivity.this); 
       LinearLayout book_date_row = new LinearLayout(MybookingsActivity.this); 
       LinearLayout trip_date_row= new LinearLayout(MybookingsActivity.this); 
       LinearLayout location_row= new LinearLayout(MybookingsActivity.this); 
       LinearLayout feedback_row= new LinearLayout(MybookingsActivity.this); 

       final TextView id_ = new TextView(MybookingsActivity.this); 
       final TextView book_date = new TextView(MybookingsActivity.this); 
       final TextView trip_date = new TextView(MybookingsActivity.this); 
       final TextView location = new TextView(MybookingsActivity.this); 
       final TextView sep = new TextView(MybookingsActivity.this); 
       final Button feedback = new Button(MybookingsActivity.this); 

       final String ID = allrows.getString(0); 
       String BOOK_DATE= allrows.getString(1); 
       String TRIP_DATE= allrows.getString(2); 
       String LOCATION= allrows.getString(3); 

       id_.setTextColor(Color.RED); 
       id_.setPadding(20, 5, 0, 5); 

       book_date.setTextColor(Color.RED); 
       book_date.setPadding(20, 5, 0, 5); 
       trip_date.setTextColor(Color.RED); 
       trip_date.setPadding(20, 5, 0, 5); 
       location.setTextColor(Color.RED); 
       location.setPadding(20, 5, 0, 5); 

       System.out.println("BOOK_DATE " + allrows.getString(cindex) + " TRIP_DATE : "+ allrows.getString(cindex1)+ " LOCATION : "+ allrows.getString(cindex2)); 
       System.out.println("ID : "+ ID + " || BOOK_DATE " + BOOK_DATE + "|| TRIP_DATE : "+ TRIP_DATE+ "|| LOCATION : "+LOCATION); 

       id_.setText("ID : " + ID); 
       id_row.addView(id_); 
       Linear.addView(id_row); 
       book_date.setText("BOOK_DATE : "+BOOK_DATE); 
       book_date_row.addView(book_date); 
       Linear.addView(book_date_row); 
       trip_date.setText("TRIP_DATE : " + TRIP_DATE); 
       trip_date_row.addView(trip_date); 
       Linear.addView(trip_date_row); 
       location.setText("LOCATION : " + LOCATION); 
       location_row.addView(location); 
       Linear.addView(location_row); 
       feedback.setText("Feedback"); 
       feedback.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent intent=new Intent(MybookingsActivity.this,FeedbackActivity.class); 
         intent.putExtra("id", ID); 
         startActivity(intent); 
        } 
       }); 
       feedback_row.addView(feedback); 
       Linear.addView(feedback_row); 
       sep.setText("---------------------------------------------------------------"); 
       Linear.addView(sep); 
      } 
      while(allrows.moveToNext()); 
     } 
     mydb.close(); 
    }catch(Exception e){ 
     Toast.makeText(getApplicationContext(), "Error encountered."+e.toString(), Toast.LENGTH_LONG).show(); 
    } 

嘗試it..Dont忘記改變DBNAME,表名和fielnames ..

1

通常情況下,你可以隨時使用ArrayAdapter顯示在列表視圖的東西。 (有一個good tutorial關於它和許多其他的你可以找到在互聯網上)

對於分貝的東西,除了基本的ArrayAdapter,您還可以使用CursorAdapter其中有一些額外的好處,如動態加載和自動刷新。

要使用CursorAdapter,請讓您的Activity執行LoaderCallback<Cursor>及其所需的回調。

初始化一個CursorAdapter並將其設置爲ListView

CreateLoader(...)方法中,查詢您需要的任何內容。

請記得正確實施newViewbindView

一個簡單的樣本可能看上去象下面這樣:

public class TestActivity extends Activity implements LoaderCallbacks<Cursor>{ 
     ListView listview; 
     CursorAdapter cursorAdapter; 



     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     cursorAdapter = new CursorAdapter(this, null) { 

      @Override 
      public View newView(Context context, Cursor cursor, ViewGroup parent) { 
      LayoutInflater inflater = 
       (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View rowView; 
      rowView = inflater.inflate(R.layout.device_list_item, parent, false); 
      bindView(rowView, context, cursor); 
      return rowView; 
      } 

      @Override 
      public void bindView(View view, Context context, Cursor cursor) { 
      TextView textView = view.findViewById(R.id.text); 
      textView.setText(cursor.getString(0)); 

      } 
     }; 
     } 

     @Override 
     public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
     return db.query(...); 
     } 

     @Override 
     public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
     cursorAdapter.swapCursor(data); 

     } 

     @Override 
     public void onLoaderReset(Loader<Cursor> loader) { 
     cursorAdapter.swapCursor(null); 

     } 

    } 
相關問題