2014-07-09 4 views
0

UPDATETextView и кнопки в ListView - OnClick работы, OnItemClick не работает

Моя кнопка как большой, как вид каждого ListItem - может быть, это вызывает проблему? Можно ли нажать один раз и позволить ответить как OnItemclick, так и OnClick?


У меня есть просмотр списка с двумя текстовыми изображениями и кнопкой. Я знаю, что есть много вопросов, но я прочитал их много, и никто не работает.

Я хочу, чтобы OnItemClick каждого вида просмотра списка работал. Я также хочу, чтобы кнопка OnClick внутри каждого вида просмотра списка работала.

Только OnClick кнопки, кажется, ответить

В моей XML я поставил android:focusable="false" для кнопки. Для TextViews я поставил 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(); 
      } 
     }); 
+0

Вы пытаетесь использовать андроид: duplicateParentState = "true" для textview? –

+0

Да, попробовал это, и OnItemClickListener все еще не отвечает. –

+0

Сделать ListView focusable –

ответ

0

Попробуйте заменить OnClickListener на OnTouchListener.

Как это:

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; 
    } 
};); 

При возврате ложна этого слушателя, вы имеете в виду «Эй, я еще не закончил с этим действием (нажмите вниз), пожалуйста, дайте действие на следующий вид»

+0

Спасибо. Реализовано это, но кнопка блокирует действие от перехода к представлению списка. –