2016-05-07 3 views
0

У меня есть два текстовых изображения и одно изображение в моем списке_item_layout. Я хочу выполнять некоторые операции над каждым представлением при щелчке. Как это сделать? Также мне нужно выполнить действие удаления при длительном нажатии макет списка элементов.Доступ ко всем представлениям list_item в спискеview android

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="100dp" 
android:background="@drawable/rectangle_shadow" 
android:orientation="horizontal"> 



    <TextView 
     android:id="@+id/t1" 
     android:layout_width="match_parent" 
     android:fontFamily="monospace" 
     android:minHeight="30dp" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" /> 



<TextView 
    android:layout_margin="2dp" 
    android:id="@+id/t2" 
    android:layout_gravity="center_vertical" 
    android:textStyle="italic" 
    android:layout_width="0dp" 
    android:layout_weight="0.4" 
    android:layout_height="wrap_content" /> 

<ImageView 
    android:id="@+id/word_list_popup_menu_button" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:padding="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_gravity="center_vertical" 
    android:alpha="0.5" 
    android:background="@null" 
    android:src="@drawable/ic_more_vert_black_24px" /> 
</LinearLayout> 

ответ

0

Набор OnClickListener для каждого из этих взглядов в getView() методе адаптера:

public View getView(int position, View convertView, ViewGroup viewGroup) { 
    ViewHolder viewHolder; 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.list_item_layout, parent, false); 
     viewHolder = new ViewHolder(); 
     viewHolder.t1 = convertView.findViewById(R.id.t1); 
     viewHolder.t1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 
     viewHolder.t2 = convertView.findViewById(R.id.t2); 
     viewHolder.t2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 
     viewHolder.word_list_popup_menu_button = convertView.findViewById(R.id.word_list_popup_menu_button); 
     viewHolder.word_list_popup_menu_button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 
     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    return convertView; 
} 

static class ViewHolder { 
    TextView t1; 
    TextView t2; 
    ImageView word_list_popup_menu_button; 
} 
+0

Привет, вы можете помочь мне сделать это в методе onCreateView во фрагменте, а не в классе адаптера. Не уверен, что, если есть разница между выполнением этого в классе адаптера и фрагментом, но большинство подобных вопросов предложили другой путь , – Satya

+0

Если вы используете ListView, вам нужно создать для него адаптер. Прикрепите исходный код этого фрагмента –

0

Если вы будете следовать guides Намечены RecyclerView, они объясняют, как вы свяжете на макет и мнение вы заинтересованы в использовании ViewHolders. Это связано с фундаментальным способом работы - они не хранят все свои предметы одновременно, вместо этого они повторно используют представления для повышения производительности.

Все, что находится в путеводителях, вот где я и все узнали об этом!

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