2012-11-19 123 views
0

我有一個Listview,並在每一行中有一個Button。如果我按Button我想要顯示Toast帶有textview和一個按鈕的listview

我已經知道如何將onItemClickListener設置爲我的List,但我不知道如何將行到一個Button反應。這是我的代碼到現在爲止,如果我不需要去改變它了很多這將是巨大的:)

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    if(arg2 == 0){         
     Context context = getApplicationContext(); 
     String text = "Toast"; 
     Toast meinToast = Toast.makeText(context, text, Toast.LENGTH_SHORT); 
     meinToast.show();        
    } 
} 
+1

設置上的每個按鈕一個onClick監聽器在列表中的適配器。 button.setOnClickListener(收聽); – dymmeh

回答

0

你需要一個OnClickListener爲每個按鈕。

請閱讀本文,然後您將能夠創建OnClickListeners並將它們附加到按鈕或其他對象。 http://developer.android.com/guide/topics/ui/ui-events.html

在情況下,當你wan't實施OnclickListener()嘗試寫View.OnClickListener.單擊該按鈕時發生的去OnClick(){//foo}(會自動生成)的動作有問題。

只需要設置使用button.setOnclickListener(yourOnclickListener);

編輯

Button mButton = ... 

mButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       //foo 
      } 
     }); 
+0

THX ...但據我所知,這裏的信息是非常一般的關於「如何創建一個按鈕的OnClickListener」。但我的問題是如何在LISTVIEW中爲按鈕創建OnClickListener? – Charles1

+0

我認爲這應該無論如何工作。 – Goot

0

這是一個很好的教程如何使用的ListView自定義適配器onclicklistener,

http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/

所以,你可以使用這樣的自定義適配器類中的函數:

public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     final Button button = (Button) vi.findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 
     return vi; 
    } 

如果您添加了一些更多的邏輯,您可以爲列表中的每個diplayed按鈕創建自定義事件。

1

在適配器試試這個:

@Override 
public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    View row = convertView; 
    YourWrapper wrapper = null; 

    if (row == null) 
    { 
     row = inflater.inflate(R.layout.layout, parent, false); 
     wrapper = new YourWrapper (row); 
     row.setTag(wrapper); 
    } 
    else 
     wrapper = (YourWrapper) row.getTag(); 

    wrapper.getButton().setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      // What you want 
     } 
    }); 

    return row; 
}