ListView中的TextView和Button-OnClick工作,OnItemClick不工作



更新

我的按钮和每个ListItem的视图一样大——也许这就是问题的原因?是否可以按一次并让OnItemclick和OnClick都响应?


我有一个带有两个文本视图和一个按钮的列表视图。我知道有很多问题在发布,但我读了很多,似乎没有一个有效。

我希望列表视图的每个视图的OnItemClick都能工作。我还希望列表视图的每个视图中的按钮的OnClick能够工作。

似乎只有点击按钮才能响应

在我的xml中,我为按钮设置了android:focusable="false"。对于文本视图,我设置了android:textIsSelectable="false" android:clickable="false" android:focusable="false"

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/rectangle_order"
    android:layout_gravity="center_horizontal"
    >
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="@dimen/order_height"
    >
        <Button
            android:id="@+id/img"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:focusable="false"
            />

        <TextView
            android:id="@+id/txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textStyle="bold"
            android:textSize="@dimen/text_size"
            android:textColor="@color/white"
            android:rotation="90"
            android:textIsSelectable="false"
            android:clickable="false"
            android:focusable="false"
            />
        <TextView
            android:id="@+id/timer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="@dimen/timer_size"
            android:rotation="90"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="29dp"
            android:textIsSelectable="false"
            android:clickable="false"
            android:focusable="false"
            />
</RelativeLayout>
</RelativeLayout>

这是我的列表视图的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_weight="0.5"
    android:layout_width="@dimen/order_height"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical"
    >
    <ListView
        android:id="@+id/list"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_weight="0.5"
        android:divider="@android:color/transparent"
        android:dividerHeight="10.0sp"
        android:scrollbars="none"
        >
    </ListView>
</RelativeLayout>

在我的适配器的GetView中,我有:

 Button b = (Button) rowView.findViewById(R.id.img);
    b.setBackgroundResource(R.color.pending);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(numberOfTimers < 2){
                view.setBackgroundResource(R.color.ongoing);
                countDownTimer = new MyCountDownTimer(TIME_PANINI, 1000,timerTextView, view);
                countDownTimer.start();
            }
        }
    });

在我的主要活动中,我将一个onItemClickListener设置为listView:

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Log.d(TAG_MAIN, "we are in select onitemclicklistener");
                Toast.makeText(getApplicationContext(),"BOOOOH", Toast.LENGTH_SHORT).show();
            }
        });

尝试用OnTouchListener替换OnClickListener。

像这样:

b.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction()==MotionEvent.ACTION_DOWN){
            if(numberOfTimers < 2){
                view.setBackgroundResource(R.color.ongoing);
                countDownTimer = new MyCountDownTimer(TIME_PANINI, 1000,timerTextView, view);
                countDownTimer.start();
            }
        }
        return false;
    }
};);

当你在这个监听器上返回false时,你的意思是"嘿,我还没有完成那个动作(按下(,请让动作进入下一个视图">

相关内容

  • 没有找到相关文章

最新更新