2013-01-02 3 views
0

나는 DatabaseHelper 클래스에 데이터베이스를 만들고 있습니다. 이 클래스에서 textview, tablerows 및 tablelayout을 만들었습니다. 나는 또한 tablayows에 tablerows와 tablayout에 textviews를 추가했습니다.TableLayout 만들기 및 다른 클래스에서 호출 - 안드로이드

제 질문은 다른 클래스에서이 tablelayout을 호출하여 액티비티에 표시하는 방법입니다. 나는 조금 연구했고, 내가 아래 주석 처리 한 코드 행을 써야한다고 생각한다. 주석 처리 된 줄에서이 클래스는 activity/xml 파일이 없기 때문에 구현할 수있는 것처럼 보이지 않습니다.

잘 설명해 주셨으면합니다.

public class DatabaseHelper extends SQLiteOpenHelper { 

    Context context;  
    DatabaseHelper dh; 
    SQLiteDatabase db; 

    private static final int DATABASE_VERSION = 1; 
    private static final String DB_NAME = "test3"; 
    private static final String DB_PATH = "/data/data/com.example.test/databases/"; 
    private static final String TABLE = "HighscoresList"; 

    // Table columns names. 
    private static final String RANK = "_id"; 
    private static final String SCORE = "score"; 
    private static final String PERCENTAGE = "percentage"; 

    TableLayout table; 
    TableRow rowHeader, row1, row2, row3, row4, row5, row6, row7, row8, row9, row10; 
    TextView rank, percentage, score; 

    public DatabaseHelper(Context context) { 
     super(context, DB_NAME, null, DATABASE_VERSION); 
     db = getWritableDatabase(); 

     TableRow rowHeader = new TableRow(context); 
     TableRow row1 = new TableRow(context); 
     TableRow row2 = new TableRow(context); 
     TableRow row3 = new TableRow(context); 
     TableRow row4 = new TableRow(context); 
     TableRow row5 = new TableRow(context); 
     TableRow row6 = new TableRow(context); 
     TableRow row7 = new TableRow(context); 
     TableRow row8 = new TableRow(context); 
     TableRow row9 = new TableRow(context); 
     TableRow row10 = new TableRow(context); 

     TextView rank = new TextView(context); 
     TextView percentage = new TextView(context); 
     TextView score = new TextView(context); 
     TextView r1r = new TextView(context); 
     TextView r1p = new TextView(context); 
     TextView r1s = new TextView(context); 

     Cursor c_percentage = db.rawQuery("SELECT " + PERCENTAGE + " FROM " + TABLE + ";", null); 
     Cursor c_score = db.rawQuery("SELECT " + SCORE + " FROM " + TABLE + ";", null); 

     rank.setText("TEST - COLUMN RANK"); 
     percentage.setText("TEST - COLUMN PERCENTAGE"); 
     score.setText("TEST - COLUMN SCORE"); 
     r1r.setText("test..rank"); 
     r1p.setText("teset...percentage"); 
     r1s.setText("test...scoree"); 

     rowHeader.addView(rank); 
     rowHeader.addView(percentage); 
     rowHeader.addView(score); 

     row1.addView(r1r); 
     row1.addView(r1p); 
     row1.addView(r1s); 

     table.addView(rowHeader); 
     table.addView(row1); 
     table.addView(row2); 
     table.addView(row3); 
     table.addView(row4); 
     table.addView(row5); 
     table.addView(row6); 
     table.addView(row7); 
     table.addView(row8); 
     table.addView(row9); 
     table.addView(row10); 

       //table = (TableLayout)contextActivity.findViewById(R.id.tableLayout); 
    } 

      //more methods and code below... 
} 

답변

1

당신 TableLayout을은 전망이며, 만 활동에서 (표시)를 사용한다. TableLayout과 관련된 모든 코드를이 테이블을 표시하려는 활동에 넣으십시오. DatabaseHelper 클래스 (이름에서 알 수 있듯이)는 데이터베이스 액세스에 대한 도움을 위해서만 사용하십시오. 예를 들면 :

당신은 같은 것을 할 수있는 활동에서 지금
public class DatabaseHelper extends SQLiteOpenHelper { 
    DatabaseHelper dh; 

    private static final int DATABASE_VERSION = 1; 
    private static final String DB_NAME = "test3"; 
    private static final String DB_PATH = "/data/data/com.example.test/databases/"; 
    private static final String TABLE = "HighscoresList"; 

    // Table columns names. 
    private static final String RANK = "_id"; 
    private static final String SCORE = "score"; 
    private static final String PERCENTAGE = "percentage"; 

    public DatabaseHelper(Context context) { 
     super(context, DB_NAME, null, DATABASE_VERSION); 
    } 

    public SQLiteDatabase openDb() { 
     return this.getReadableDatabase(); // Use Readable because you're not actually writing any values into your db 
    } 

    public void closeDb(SQLiteDatabase db) { 
     db.close(); 
    } 

    public Cursor getScore(SQLiteDatabase db) { 
     return db.rawQuery("SELECT " + SCORE + " FROM " + TABLE + ";", null); 
    } 

    public Cursor getPercentage(SQLiteDatabase db) { 
     return db.rawQuery("SELECT " + PERCENTAGE + " FROM " + TABLE + ";", null); 
    } 
} 

: 각 클래스에 얼마나 많은 클래스에 필요한 어떤 일이 일어나는지

public class Blah extends Activity { 
    ... 
    public void drawTable() { 
    TableLayout table = (TableLayout)findViewById(R.id.tableLayout); 
    ... // initialize all views as before 
    DatabaseHelper helper = new DatabaseHelper(this); 
    SQLiteDatabase db = helper.openDb(); 

    Cursor scores = helper.getScore(db); 
    Cursor percentages = helper.getPercentage(db); 
    ... // do something with the Cursors 
    .. 
    // finally 
    scores.close(); 
    percentages.close(); 
    helper.closeDb(db); 
    } 
    ... 
} 
+0

코드 구조는 아마 내가 가장에서 다루는 가장 어려운 일이다 프로젝트. 나는 너의 충고를 이행 할 것이다. 감사! – Matt

관련 문제