2014-01-23 267 views
1

所以我有一個活動,它有一個滾動視圖內的表視圖。 我動態地添加行到表視圖。每行有2個數據庫查詢和2個整數。我需要在刪除整行的行上添加一個按鈕,並從包含該行的數據庫中刪除數據。Android刪除按鈕

我已經設置了按鈕,但我沒有寫onClickListner它。我不知道如何檢測哪個按鈕被按下,以及如何將其與相應的行相關聯。

任何幫助非常感謝。謝謝 !

這是添加一行的方法。位置對象只是保存從數據庫中獲取的數據。

public void insertRow(Location l,int index){ 
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


     View newRow = inflater.inflate(R.layout.row, null); 

     TextView textview = (TextView) newRow.findViewById(R.id.textViewLocation); 
     TextView textview2= (TextView) newRow.findViewById(R.id.coordinates); 

     textview2.setText(l.getLatitude() +" | "+ l.getLongitude()); 
     textview.setText(l.getName()); 

     //Button remove = (Button) newRow.findViewById(R.id.removeButtonLocation); 
     // remove.setOnClickListener(removeLocationListener); 



     // Add the new components for the location to the TableLayout 
     a.addView(newRow, index); 


} 

而且佈局文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/locations_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/row0" 
     android:layout_gravity="center" /> 

    <ScrollView 
     android:id="@+id/Locations_scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
     <TableLayout 
      android:id="@+id/stockTableScrollView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/egg_shell" > 

     </TableLayout> 

    </ScrollView> 



    </LinearLayout> 
+1

如果您在自己的嘗試中包含一些代碼,您將獲得更多幫助。請這樣做,它也將使你更清楚你正在努力:) –

+0

我也有一個活動,他現在在家裏。請張貼一些代碼夥計。 –

+0

完成,添加代碼。 –

回答

1

好了,讓我們從你的問題,一次一個。實際上,你的代碼已經存在,但它已被註釋掉,讓我們來看看它:

Button remove = (Button) newRow.findViewById(R.id.removeButtonLocation); 
    remove.setOnClickListener(removeLocationListener); 

這是說有一個叫做對象removeLocationListener您還沒有該做的工作。 OnClickListener只定義了一個函數onClick (View v)。傳遞的視圖是參考視圖。所以,你想獲得與該視圖關聯的行,並將其刪除。我們首先得到這一行:

public void onClick(View v) { 
    TableRow row=(TableRow) v.getParent(); 
} 

好吧,那麼現在你如何刪除該行?事實證明,你必須從它上面的佈局中刪除它。因此,讓我們做以前做過同樣的事情來得到它的視圖:

public void onClick(View v) { 
    TableRow row=(TableRow) v.getParent(); 
    TableLayout tl=(TableLayout) v.getParent(); 
    tl.removeView(row); 
} 

讓我們只定義removeLocationListener地方:

OnClickListener removeLocationListener= new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     TableRow row=(TableRow) v.getParent(); 
     TableLayout tl=(TableLayout) v.getParent(); 
     tl.removeView(row); 
    } 
}; 

順便說一句,你可能想看看在ListView,這是更適合對於這樣的事情。你甚至可以將光標直接傳遞給它,這將使整個事情更容易管理。