如何在垂直列表视图中创建水平列表视图?

时间:2016-05-21 05:33:08

标签: android listview android-recyclerview horizontallistview

我已成功在垂直列表视图中添加列表视图。 我的问题是水平列表视图。有人可以向我解释我应该如何创建一个水平的ListView? 我应该切换到Recycler View来创建水平List吗?或者我坚持使用ListView?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

使用带有Horizo​​ntal LinearLayout的RecyclerView作为垂直RecyclerView的垂直LinearLayoutManager的项目视图。是的,如果您现在正在从头开始创建视图,请始终使用Recycler View而不是ListView。

答案 1 :(得分: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;
}