我在本网站上发过很多关于listview的帖子,但是无法选择按钮和文本视图。但我的问题不同,我无法从其他相关帖子中得出结论。 我有一个由BaseAdapter填充的listview。列表视图的布局是左侧的2个文本视图,右侧是每行的按钮。我希望能够选择按钮以及列表视图的整行。
我知道按钮在使用时正在获得关注。有人能告诉我如何制作按钮以及整行 - 可选?
此致 阿吉特
答案 0 :(得分:0)
是的,您可以通过在布局中将焦点设置为false按钮来执行此操作,执行此操作即可解决您的问题
只有当List没有任何可聚焦的元素时,它才会单击。因此,如果要单击列表和按钮,则将按钮的焦点设置为false。通过此,您可以单击按钮和整个列表
答案 1 :(得分:0)
将android:onClick属性添加到布局XML中的按钮。
<强>机器人:的onClick 强>:
单击视图时要调用的此View上下文中的方法的名称。此名称必须对应于只接受View类型的一个参数的公共方法。例如,如果指定android:onClick =“sayHello”,则必须声明上下文的公共void sayHello(View v)方法(通常是您的Activity)。
答案 2 :(得分:0)
我也面临同样的问题,下面是关于如何在Android API 16级解决它的示例代码。最重要的是拥有 android:clickable 和 android:focusable < / strong>设置为true。
在您的行XML文件中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:clickable="true"
android:focusable="true"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button" />
</LinearLayout>
在基础适配器中,您可以将侦听器设置为执行某些操作:
public class MyBaseAdapter extends BaseAdapter {
// Some other method implementation here...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Initialize the convertView here...
LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.row_layout);
Button button = (Button) convertView.findViewById(R.id.button);
layout.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(context, "Row clicked!", Toast.LENGTH_LONG).show();
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(context, "Button clicked!", Toast.LENGTH_LONG).show();
}
});
}
}