2013-05-06 184 views
0

我創建了一個數據庫,其內容顯示在表格佈局中。當我插入數據庫時​​數據顯示在表格中。直到這工作正常。但問題是,當我點擊一行其內容不顯示在烤麪包(而不是如果我想顯示在另一個頁面)。只有最後一行被點擊,此外,其列只顯示索引設置。提前致謝。顯示從數據庫中檢索表格的整行數據

這是我的XML頁面

<?xml version="1.0" encoding="utf-8"?> 

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/gradientb" 
    android:id="@+id/tableLayout1" 
    android:shrinkColumns="*" 
    android:stretchColumns="*" > 


<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="fitXY" 
    android:src="@drawable/deliverylistbar" /> 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" > 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
<TextView 
     android:id="@+id/TextView0" 
     android:gravity="center|left" 
     android:text="Id" 
     android:textColor="@android:color/black" 
     android:textSize="20dp" 
     android:textStyle="bold" 
     android:typeface="serif" > 

    </TextView> 
    <TextView 
     android:id="@+id/TextView1" 
     android:gravity="center|left" 
     android:text="Items" 
     android:textColor="@android:color/black" 
     android:textSize="20dp" 
     android:textStyle="bold" 
     android:typeface="serif" > 

    </TextView> 

    <TextView 
     android:id="@+id/TextView2" 
     android:gravity="center|left" 
     android:text="Location" 
     android:textColor="@android:color/black" 
     android:textSize="18dp" 
     android:textStyle="bold" 
     android:typeface="serif" > 

    </TextView> 

    <TextView 
     android:id="@+id/TextView3" 
     android:gravity="center|left" 
     android:text="PickBy" 
     android:textColor="@android:color/black" 
     android:textSize="18dp" 
     android:textStyle="bold" 
     android:typeface="serif" > 

    </TextView> 

    <TextView 
     android:id="@+id/TextView4" 
     android:gravity="center|left" 
     android:text="Status" 
     android:textColor="@android:color/black" 
     android:textSize="18dp" 
     android:textStyle="bold" 
     android:typeface="serif" > 

    </TextView> 
    </TableRow> 
</TableLayout> 

現在SampleTableActivitys.java頁面在這裏給出....

public class SampleTableActivity extends Activity { 
    /** Called when the activity is first created. */ 


SQLiteDatabase database; 
private static String DBNAME = "sample.db";  
private static String TABLE = "test"; 

TableLayout tableLayout; 
TableRow row; 
TextView firstCol; 
TextView secondCol; 
TextView thirdCol; 
TextView fourthCol; 
TextView fifthCol; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tableLayout=(TableLayout)findViewById(R.id.tableLayout1); 

    createDB(); 
    insertValues(); 
    displayDB(); 
    row.setClickable(true); 
    row.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 

     Toast.makeText(getApplicationContext(), " "+row.getTag(), 
      Toast.LENGTH_LONG).show(); 
      view.setBackgroundColor(Color.WHITE); 
     } 
     }); 
} 

創建的列使用該...

private void displayDB() { 

database=openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null); 
if(database!=null) 
{ 
    Cursor cursor=database.rawQuery("SELECT * FROM "+ TABLE, null); 

    Integer index0=cursor.getColumnIndex("ID"); 
    Integer index1 = cursor.getColumnIndex("ITEMS");  
     Integer index2 = cursor.getColumnIndex("LOCATION"); 
     Integer index3 = cursor.getColumnIndex("NAME"); 
     Integer index4 = cursor.getColumnIndex("STATUS"); 
     if(cursor.getCount()>0) 
     { 
      cursor.moveToFirst(); 
      do 
      { 
       row=new TableRow(this); 
       row.setId(100); 
       row.setTag(cursor.getString(index0)); 
       row.setTag(cursor.getString(index1)); 
       row.setTag(cursor.getString(index2)); 
       row.setTag(cursor.getString(index3)); 
       row.setTag(cursor.getString(index4)); 
       row.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 

       /*Setting up the first coloumn parameters*/ 
       firstCol=new TextView(this); 
       firstCol.setText(cursor.getString(index0)); 
       firstCol.setTextSize(16); 
       firstCol.setTextColor(Color.DKGRAY); 
       firstCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(firstCol); //adding coloumn to row 

       /*Setting up the second coloumn parameters*/    
       secondCol=new TextView(this); 
       secondCol.setText(cursor.getString(index1)); 
       secondCol.setTextColor(Color.DKGRAY); 
       secondCol.setTextSize(16); 
       secondCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(secondCol); //adding coloumn to row 

       /*Setting up the third coloumn parameters*/ 
       thirdCol=new TextView(this); 
       thirdCol.setText(cursor.getString(index2)); 
       thirdCol.setTextColor(Color.DKGRAY); 
       thirdCol.setTextSize(16); 
       thirdCol.setLayoutParams(new LayoutParams(
         LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(thirdCol); //adding coloumn to row 
       fourthCol=new TextView(this); 
       fourthCol.setText(cursor.getString(index3)); 
       fourthCol.setTextSize(16); 
       fourthCol.setTextColor(Color.DKGRAY); 
       fourthCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(fourthCol); 

       fifthCol=new TextView(this); 
       fifthCol.setText(cursor.getString(index4)); 
       fifthCol.setTextSize(16); 
       fifthCol.setTextColor(Color.BLACK); 
       fifthCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(fifthCol); 
       /*Adding the row to the tablelayout*/ 
       tableLayout.addView(row,new TableLayout.LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 

      }while(cursor.moveToNext()); 
      database.close(); 
     } 
     else 
     { 
      Toast.makeText(getBaseContext(), "NOT AVAILABLE", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

在這裏創建數據庫....

private void createDB() { 
    // TODO Auto-generated method stub 
    try 
    { 
     database=openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null); 
     database.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE +" (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ITEMS TEXT, LOCATION TEXT, NAME TEXT, STATUS TEXT);"); 
     database.close(); 
    } 
    catch(Exception e) 
    { 
     Log.e("Database Creation", "Error "+e.toString()); 
    } 
} 

回答

1

兩件事情我可以看到:

  1. 在​​,您要分配同一個ID每一行。爲每一個分配唯一的ID。 您可以使用循環內是這樣分配的唯一ID:

    row.setId(increment+10); 
    increment++; 
    

    可以初始化increment到100或任何其他值,外循環。

編輯:完整代碼

private void displayDB() { 

database=openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null); 
if(database!=null) 
{ 
    Cursor cursor=database.rawQuery("SELECT * FROM "+ TABLE, null); 
    **int increment =100;** 
    Integer index0=cursor.getColumnIndex("ID"); 
    Integer index1 = cursor.getColumnIndex("ITEMS");  
     Integer index2 = cursor.getColumnIndex("LOCATION"); 
     Integer index3 = cursor.getColumnIndex("NAME"); 
     Integer index4 = cursor.getColumnIndex("STATUS"); 
     if(cursor.getCount()>0) 
     { 
      cursor.moveToFirst(); 
      do 
      { 
       row=new TableRow(this); 

       **row.setId(increment + 10); 
      increment++;** 

      row.setTag(cursor.getString(index0)); 
       row.setTag(cursor.getString(index1)); 
       row.setTag(cursor.getString(index2)); 
       row.setTag(cursor.getString(index3)); 
       row.setTag(cursor.getString(index4)); 
       row.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 

       /*Setting up the first coloumn parameters*/ 
       firstCol=new TextView(this); 
       firstCol.setText(cursor.getString(index0)); 
       firstCol.setTextSize(16); 
       firstCol.setTextColor(Color.DKGRAY); 
       firstCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(firstCol); //adding coloumn to row 

       /*Setting up the second coloumn parameters*/    
       secondCol=new TextView(this); 
       secondCol.setText(cursor.getString(index1)); 
       secondCol.setTextColor(Color.DKGRAY); 
       secondCol.setTextSize(16); 
       secondCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(secondCol); //adding coloumn to row 

       /*Setting up the third coloumn parameters*/ 
       thirdCol=new TextView(this); 
       thirdCol.setText(cursor.getString(index2)); 
       thirdCol.setTextColor(Color.DKGRAY); 
       thirdCol.setTextSize(16); 
       thirdCol.setLayoutParams(new LayoutParams(
         LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(thirdCol); //adding coloumn to row 
       fourthCol=new TextView(this); 
       fourthCol.setText(cursor.getString(index3)); 
       fourthCol.setTextSize(16); 
       fourthCol.setTextColor(Color.DKGRAY); 
       fourthCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(fourthCol); 

       fifthCol=new TextView(this); 
       fifthCol.setText(cursor.getString(index4)); 
       fifthCol.setTextSize(16); 
       fifthCol.setTextColor(Color.BLACK); 
       fifthCol.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
       row.addView(fifthCol); 
       /*Adding the row to the tablelayout*/ 
       tableLayout.addView(row,new TableLayout.LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 

      }while(cursor.moveToNext()); 
      database.close(); 
     } 
     else 
     { 
      Toast.makeText(getBaseContext(), "NOT AVAILABLE", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
  1. OnCreate(),您呼叫displayDB()之後設置onClickListener爲一排,所以只有最後一行監聽器連接到它。將OnClick()附加到您正在創建的每一行,並且這可以在創建行的循環中完成。
+0

非常感謝...我可以趕上你的第二點,我已經實施it.its工作正常,即現在我可以點擊每一行。但仍然相同的價值顯示每個click.i無法讓你的第一point.how我應該爲每一行分配唯一的id。你可以親切地配合它,因爲它是非常有用的。預先感謝 – 2013-05-06 09:48:40

+0

你可以編輯我給出的代碼嗎?我會非常感謝 – 2013-05-06 10:01:21

+0

檢查更新後的答案,添加了一些示例代碼! – 2013-05-06 10:33:52

相關問題