在我的应用程序中,我有一个包含自定义行的列表,在每行中我都有一个按钮,我想将所有按钮设置为同一个监听器。当我定义一个按钮的监听器(代码中的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为空,任何想法为什么会发生?
答案 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);