2014-04-17 67 views
-1

我有一個ListView,用於顯示其中包含數據的行。每行應該有一個按鈕。點擊該按鈕時,應該啓動一個查詢,其中包含與該行相關的數據。但是,我無法讓按鈕顯示出來。如果我在佈局文件中定義按鈕,它會顯示,但我會開始遇到每個具有完全相同ID的按鈕的問題。如果我動態地創建按鈕,他們要麼不顯示或弄亂我的佈局。爲ListView動態創建按鈕

編輯: 這是用於動態創建按鈕我的代碼:

LinearLayout ll = (LinearLayout) findViewById(R.id.button_container); 
LayoutParams params = ll.getLayoutParams(); 
btn = new Button(this); 
btn.setText("Check in"); 
btn.setId(i); 
ll.addView(btn); 
params.height=LayoutParams.WRAP_CONTENT; 
params.width=LayoutParams.WRAP_CONTENT; 
ll.setLayoutParams(params); 
btn.setTag(mGoalIds[i]); 
btn.setOnClickListener(mButtonListener); 

EDIT2:管理人與OnItemClickListener更換按鈕來解決它。

+3

添加一些相關的代碼,請。 – Sajmon

+0

實現您的適配器的'getView'內的點擊監聽器 –

+0

我使用SimpleCursorAdapter來填充我的列表。我應該重寫getView方法嗎? – Anubis

回答

0

第一個實現很好,你應該在xml佈局文件中定義按鈕。

現在你的問題我如何檢測在運行時點擊哪個按鈕,因爲所有的按鈕都有相同的ID。

解決方案 - >

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // ........................... 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String getSelectedItem = yourArrayList.get(position); 
      } 
     }); 

     return convertView; 
    }