2016-09-22 6 views
0

У меня есть ListView, и есть этот стиль элементаListView эффект нажмите ребенок пункта

enter image description here

, когда я нажимаю на любой его части все выбранные

enter image description here

но я хотел бы получить отдельный эффект от Описание и Действие 1 и Действие 2

этот стиль:

enter image description here

enter image description here

Мой деталь XML

... 
<LinearLayout android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:id="@+id/linearLayout" 
       android:layout_marginLeft="3dp"> 

     <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:id="@+id/txtDescription" 
       android:text="description" /> 

     <!--this is one separator horizontal --> 
     <View 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:background="@android:color/darker_gray"/> 

     <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="50dp" 
       android:weightSum="100" 
       android:orientation="horizontal"> 

      <LinearLayout android:layout_width="wrap_content" 
          android:layout_weight="50" 
          android:id="@+id/test1" 
          android:layout_height="match_parent"> 

       <TextView 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:gravity="center" 
         android:id="@+id/txtAction1" 
         android:text="Action 1" /> 

      </LinearLayout> 

      <!--this is one separator vertical--> 
      <View 
        android:layout_width="1dp" 
        android:layout_height="match_parent" 
        android:background="@android:color/darker_gray" /> 


      <LinearLayout android:layout_width="wrap_content" 
          android:id="@+id/test2" 
          android:layout_height="match_parent"> 

       <TextView 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:layout_weight="50" 
         android:gravity="center" 
         android:id="@+id/txtAction2" 
         android:text="Action 2" /> 

      </LinearLayout> 
     </LinearLayout> 
</LinearLayout> 
... 

Мой класс Java

//ViewHolder 
static class ViewHolderItem { 
    public LinearLayout test1; 
    public LinearLayout test2; 
} 


//Adapter 
class RoteiroAdapter extends BaseAdapter{ 

    private Context mContext = null; 
    private List<ItemRoteiro> mListaRoteiro = null; 

    public RoteiroAdapter(Context context, List<ItemRoteiro> lista){ 
     this.mContext = context; 
     this.mListaRoteiro = lista; 
    } 

    ... 

    ... 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolderItem viewHolder; 

     if(convertView == null){ 

      LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
      convertView = inflater.inflate(R.layout.item_roteiro, parent, false); 

      viewHolder = new ViewHolderItem(); 
      viewHolder.test1= (LinearLayout) convertView.findViewById(R.id.txtTest1); 
      viewHolder.test2= (LinearLayout) convertView.findViewById(R.id.txtTest2); 
      convertView.setTag(viewHolder); 
     } 
     else{ 
      viewHolder = (ViewHolderItem) convertView.getTag(); 
     } 

     ItemRoteiro item = mListaRoteiro.get(position); 

     if(item != null) { 

      viewHolder.test1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       } 
      }); 

      viewHolder.test2.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       } 
      }); 
     } 

     return convertView; 
    } 
} 

Как решить эту проблему? Благодаря!!

+0

Я пробовал использовать ** android: clickable = "false" **, но не удалось, я думаю, что использовал неправильный путь. –

+1

Возможно, здесь есть решение, но я не могу придумать. Есть ли причина, по которой этот макет должен быть в ListView вместо ScrollView? Если бы это было в ScrollView, я думаю, что это становится гораздо более простой проблемой. – joebro

+0

Спасибо @joebro, я посмотрел эту [ссылку] (http://stackoverflow.com/questions/6763876/onclick-not-triggered-on-linearlayout-with-child), но это не сработало для меня. Я думал о том, чтобы использовать listview в том, что информация будет загружена в базу данных, это не будет количество «исправлено» –

ответ

1

Попробуйте добавить это в макет вашего адаптера.

android:descendantFocusability="blocksDescendants" 

Update

Поскольку я не заметил, что onClickListener был на макете вместо TextView, вы можете либо добавить щелчок слушателя к TextViews или применить этот атрибут к LinearLayouts

android:clickable="true" 

И это все TextViews в макетах:

android:clickable="false" 
+0

Спасибо @GaryBak за ваш ответ .. но это не сработало :( –

+0

У вас есть onItemClickListener, определенный в списке? Если это так, удалите его. –

+0

Там было OnClickListener в LinearLayout, удалено, но все равно не сработало :( –

Смежные вопросы