2011-03-30 80 views
0

我想要一個文本框和每個列表視圖行一個按鈕的列表視圖。如何在列表視圖中爲每個按鈕設置單擊事件按鈕列表視圖

回答

0

當您擴展BaseAdapater時,您將重寫getView(),在getView()中設置單擊監聽器(通過獲取對按鈕的引用)。

4

如果覆蓋ArrayAdapter,您可以使用getView()設置的onClick監聽每個列表中的元素的按鈕:

class Ass extends ArrayAdapter<RowItem> 
{ 
    @Override 
    public android.view.View getView(int position, android.view.View convertView, android.view.ViewGroup parent) 
    { 
     View elem; 
     Button btn; 

     if (convertView == null) 
     { 
      elem = getLayoutInflater().inflate(R.layout.listview_elem, parent, false); 
     } 
     else 
     { 
      elem = convertView; 
     } 

     RowItem itm = getItem(position); 
     btn = (Button) elem.findViewById(R.id.button); 
     btn.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View arg0) 
      { 
       // TODO Auto-generated method stub 
      } 
     }) 

     return elem; 
    } 
}; 
+2

Teehee,你的類被稱爲「驢」 。 – Klaus 2011-03-30 06:22:37

0

,如果你使用的自定義適配器列表視圖,那麼你在按鈕或其他視圖設置clickevent 。您不能在主文件中設置onclickevent,因爲在該文件中我們設置了onItemClickListener,如果您想在按鈕等特定視圖上使用onclicklistener,那麼您將代碼編寫在適配器類中寫入的onClickListener代碼中。

下面我顯示適配器class.In哪一個onClickListener是適用於TextView的,同爲按鈕和其他意見,該代碼在運行模式

public class YourAdapterName extends BaseAdapter 
{ 

    private LayoutInflater mInflater; 
    public YourAdapterName(Context context) { 
     this.mInflater = LayoutInflater.from(context); 
    } 
    public int getCount() { 
     return YourValue.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     final ViewHolder holder; 
     if (convertView == null) 
     { 
      convertView = mInflater.inflate(R.layout.youradapterxmlfile, null); 
      holder = new ViewHolder(); 
      holder.Name = (TextView) convertView.findViewById(R.id.YourAdapterVaraibleNameInXml); 
     } 
     else 
     { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.Name.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       // onClickEvent you written your code here 
      } 
     }); 
     holder.Name.setText("XYZ"); 
     return convertView; 
    } 
    class ViewHolder 
    { 
     TextView Name; 
    } 
}