Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView中的按钮不可单击_Java_Android_Listview - Fatal编程技术网

Java ListView中的按钮不可单击

Java ListView中的按钮不可单击,java,android,listview,Java,Android,Listview,我想单击ListView项目内的按钮,它应该与单击整个项目具有相同的效果。但当我点击按钮时什么也没发生,当我点击图像时一切正常。如何修复它? 我试着在按钮上设置: android:focusable=“true” android:clickable=“true” 我还尝试了android:后代聚焦 我没有一次尝试使按钮可点击 my_item.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro

我想单击ListView项目内的按钮,它应该与单击整个项目具有相同的效果。但当我点击按钮时什么也没发生,当我点击图像时一切正常。如何修复它? 我试着在按钮上设置: android:focusable=“true” android:clickable=“true” 我还尝试了android:后代聚焦

我没有一次尝试使按钮可点击

my_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:descendantFocusability="blocksDescendants"
>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:layout_toLeftOf="@+id/imageArrow"
    android:layout_toStartOf="@+id/imageArrow"
    />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageArrow"
    android:layout_alignTop="@+id/button"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:background="@drawable/r_arr" />
</RelativeLayout>
MyCustomAdapter.java

public class MyCustomAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] names;

static class ViewHolder {
    public TextView myButton;
    public ImageView image;
}

public MyCustomAdapter(Activity context, String[] names) {
    super(context, R.layout.my_item, names);
    this.context = context;
    this.names = names;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    // reuse views
    if (rowView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        rowView = inflater.inflate(R.layout.my_item, null);
        // configure view holder
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.myButton = (Button)rowView.findViewById(R.id.button);
        viewHolder.image = (ImageView)         rowView.findViewById(R.id.imageArrow);
        viewHolder.myButton.setFocusable(false);

        rowView.setTag(viewHolder);

    }

    // fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String s = names[position];
    String abs=Integer.toString(position + 1);
    holder.myButton.setText(s+ " number " + abs);


    holder.image.setImageResource(R.drawable.r_arr);
    return rowView;
}
}
公共类MyCustomAdapter扩展了ArrayAdapter{
私人最终活动背景;
私有最终字符串[]名称;
静态类视窗夹{
公共文本查看我的按钮;
公众形象;
}
公共MyCustomAdapter(活动上下文,字符串[]名称){
super(上下文、R.layout.my_项、名称);
this.context=上下文;
this.names=名称;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
//重用视图
if(rowView==null){
LayoutInflater充气器=上下文。getLayoutInflater();
rowView=充气机。充气(R.layout.my_项,空);
//配置视图保持架
ViewHolder ViewHolder=新ViewHolder();
viewHolder.myButton=(Button)rowView.findViewById(R.id.Button);
viewHolder.image=(ImageView)rowView.findviewbyd(R.id.imageArrow);
viewHolder.myButton.setFocusable(false);
rowView.setTag(viewHolder);
}
//填充数据
ViewHolder=(ViewHolder)rowView.getTag();
字符串s=名称[位置];
字符串abs=Integer.toString(位置+1);
holder.myButton.setText(s+“数字”+abs);
holder.image.setImageResource(R.drawable.R_arr);
返回行视图;
}
}

您只需配置onClick方法,如下所示:

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //your code goes here
            }
        });

您只需配置onClick方法,如下所示:

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //your code goes here
            }
        });

请在按钮上写onclicklistener。

请在按钮上写onclicklistener。

在getView中放置按钮单击listener

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    // reuse views
    if (rowView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        rowView = inflater.inflate(R.layout.my_item, null);

        // configure view holder
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.myButton = (Button) rowView.findViewById(R.id.button);
        viewHolder.image = (ImageView) rowView.findViewById(R.id.imageArrow);          
        viewHolder.myButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // Button click functionalty here   
            });

        rowView.setTag(viewHolder);

    }

    // fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String s = names[position];
    String abs=Integer.toString(position + 1);
    holder.myButton.setText(s+ " number " + abs);

    holder.image.setImageResource(R.drawable.r_arr);
    return rowView;

    }
}
要使listview项目和按钮都可单击,请执行此操作

使ListView可聚焦android:focusable=“true”


自定义listview项中的按钮不可聚焦android:focusable=“false”在getView中放置按钮单击侦听器

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    // reuse views
    if (rowView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        rowView = inflater.inflate(R.layout.my_item, null);

        // configure view holder
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.myButton = (Button) rowView.findViewById(R.id.button);
        viewHolder.image = (ImageView) rowView.findViewById(R.id.imageArrow);          
        viewHolder.myButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // Button click functionalty here   
            });

        rowView.setTag(viewHolder);

    }

    // fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String s = names[position];
    String abs=Integer.toString(position + 1);
    holder.myButton.setText(s+ " number " + abs);

    holder.image.setImageResource(R.drawable.r_arr);
    return rowView;

    }
}
要使listview项目和按钮都可单击,请执行此操作

使ListView可聚焦android:focusable=“true”

自定义listview项中的按钮不可聚焦android:focusable=“false”方法1:

首先替换xml中的按钮代码,如下所示

然后转到您的活动并编写如下代码

public void onClick(View v)
   {
      super.onClick(v);
      if (v.getId() == R.id.button)
      {
          //your code goes here
       }
   }
或者,您也可以在oncreate中添加以下代码

方法2:

Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
        }
    });
方法1:

首先替换xml中的按钮代码,如下所示

然后转到您的活动并编写如下代码

public void onClick(View v)
   {
      super.onClick(v);
      if (v.getId() == R.id.button)
      {
          //your code goes here
       }
   }
或者,您也可以在oncreate中添加以下代码

方法2:

Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
        }
    });

对于listview中的同一行项目,不建议使用两个单击侦听器

  • 您可以在Listview中使用自定义适配器。您可以根据自己的要求定制
  • 您可以在活动/片段列表视图中包含onclicklistener。这无法自定义,当您单击整行时,将选中该行

  • 对于listview中的同一行项目,不建议使用两个单击侦听器

  • 您可以在Listview中使用自定义适配器。您可以根据自己的要求定制
  • 您可以在活动/片段列表视图中包含onclicklistener。这无法自定义,当您单击整行时,将选中该行

  • 初始化适配器的getview方法内的按钮。您只处理对行的单击。这就是你想要的吗?你的按钮没有android:onClick或onClick Listener。因此,当您单击它时,不会发生任何事情。适配器的getview方法内的initialize按钮。您只处理对行的单击。这就是你想要的吗?你的按钮没有android:onClick或onClick Listener。因此,单击它时不会发生任何事情。