0

Мне удалось добавить представление списка внутри вертикального представления списка. Моя проблема с горизонтальным списком. Может кто-нибудь объяснить мне, как я должен создать горизонтальный ListView? Должен ли я переключиться на просмотр Recycler для создания горизонтального списка? Или я придерживаюсь ListView?Как создать представление горизонтального списка внутри вертикального представления списка?

Благодарим за помощь!

+0

RecyclerView - лучший вариант – kId

ответ

0

Используйте RecyclerView с горизонтальным LinearLayout как элемент просмотра вертикального RecyclerView с вертикальным LinearLayoutManager. Да, если вы сейчас создаете свои представления с нуля, всегда используйте Recycler View вместо ListView.

0

вам нужно просто раздуть макет внутри getView, если у вас все еще есть проблемы, а затем посмотрите на это Answer.

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

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    convertView = inflater.inflate(R.layout.horizontal_list_item, null,false); 

    LinearLayout mainLinnerLayout=(LinearLayout)convertView.findViewById(R.id.mainLinear); 

    for (int i = 0; i <5; i++) { 
     View additionView = inflater.inflate(R.layout.inner_layout_file, null,false); 
     LinearLayout innerLinnerLayout=(LinearLayout)additionView.findViewById(R.id.inner_layout); 

     // If the width varies for each innerLinnerLayout, then remove the if block & always calculate padding value 
     // padding is an integer initialized to -1 in the constructor 
     if (padding == -1) { 
      int width = context.getResources().getDisplayMetrics().widthPixels; 
      innerLinnerLayout.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 
      padding = width - additionView.getMeasuredWidth(); 
     } 
     // I've set padding to right only, but you could center it by giving left and right padding of value=(padding/2) 
     innerLinnerLayout.setPadding(0, 0, padding, 0); 
     mainLinnerLayout.addView(innerLinnerLayout); 
    } 
    return convertView; 
} 
Смежные вопросы