列表与按钮

时间:2012-02-24 14:14:20

标签: java android android-layout

在我的应用程序中,我有一个包含自定义行的列表,在每行中我都有一个按钮,我想将所有按钮设置为同一个监听器。当我定义一个按钮的监听器(代码中的btn)时,我的应用程序崩溃了 这就是我设置列表的方式:

private void updateResultsInUi() {         
        lv = getListView();  
        lv.setTextFilterEnabled(true);
        lv.setItemsCanFocus(false);
        lv.setCacheColorHint(0x00000000);

        ItemsAdapter adapter = new ItemsAdapter(this,R.layout.item_row, Catalog.instance());
        lv.setAdapter(adapter);

        lv.setTextFilterEnabled(true);  
        lv.setClickable(true); 

        Button btn = (Button)this.findViewById(R.id.cellbtn);
        btn.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
              int l = 0;
              l++;
          }
        });

    } 

这是我的行xml:

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

 <LinearLayout  
     android:layout_height="100dp"
     android:orientation="horizontal" 
     android:layout_width="fill_parent">

     <LinearLayout android:layout_height="wrap_content" 
         android:weightSum="1" android:layout_marginLeft="5dp" 
         android:layout_width="match_parent" 
         android:orientation="horizontal" android:layout_weight="1">

         <LinearLayout android:orientation="vertical" 
             android:layout_height="100dp" 
             android:layout_width="wrap_content">

             <Button android:id="@+id/cellbtn" 
                 android:layout_width="76px" 
                 android:layout_height="37px" android:background="@drawable/hazmanacell" 
                 android:layout_marginTop="20dp"/> 

         </LinearLayout>
         <LinearLayout android:layout_height="wrap_content" 
                     android:orientation="vertical" android:layout_width="0dp" 
                     android:layout_weight="1" android:layout_marginRight="10dp">

                 <TextView android:textSize="14dp" android:layout_weight="0.50" 
                 android:textStyle="bold" android:layout_height="wrap_content" 
                 android:id="@+id/toptext" android:text="stam1" 
                 android:layout_width="fill_parent" 
                 android:gravity="right" android:textColor="@color/black" /> 

                 <TextView android:textSize="12dp" android:layout_weight="0.50" 
                     android:layout_height="wrap_content" 
                     android:text="stam1" android:layout_width="fill_parent" 
                     android:id="@+id/centertext" android:gravity="right" 
                     android:textColor="@color/black" /> 


         </LinearLayout>

    </LinearLayout>
    <ImageView android:id="@+id/imageViewTwitterPic" 
    android:src="@drawable/icon" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" android:gravity="center_vertical" /> 

  

修改

在这一行:

Button btn = (Button)this.findViewById(R.id.cellbtn);

btn为空,任何想法为什么会发生?

2 个答案:

答案 0 :(得分:2)

每行

我有一个按钮....在您的适配器(ItemsAdapter)

@Override
    public View getView(final int position, View convertView, ViewGroup parent) { 

        Button btn = (Button)view.findViewById(R.id.cellbtn);
        btn.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
                Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show();
          }
        });
    }
您的row.xml中

<Button
        android:id="@+id/cellbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:textColor="#FFFFFF" />

答案 1 :(得分:0)

为什么 按钮btn =(按钮)this.findViewById(R.id.cellbtn);

你必须使用Your_Item_Layout.findViewById(R.id.cellbtn);