recyclerview没有显示列表中的所有项目

时间:2017-11-17 10:52:08

标签: android android-recyclerview

大家好我在我的应用中使用recyclerview。在显示时它只显示一个项目,但是当我调试它时,每次都会到 onBindViewHolder 方法。这是我的adapter

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.tourist_details_info, parent, false);

    return new ViewHolder(itemView);
}

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
    try {
            holder.displayName.setText(list.get(position).toUpperCase());
    }catch (Exception e){
       AxeltaLogger.err("error>>>"+e);
    }
}
@Override
public int getItemCount() {
    return list.size();
}

这是我的recyclerview

 RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setHasFixedSize(true);
touristAdapter=new TouristInfoAdapter(list);
recyclerView.setAdapter(touristAdapter);

6 个答案:

答案 0 :(得分:8)

如果您在RecyclerView中使用ScrollView,则将ScrollView替换为NestedScrollView

在RecyclerView中启用android:nestedScrollingEnabled="false"

这解决了我的问题。

答案 1 :(得分:1)

您的布局中的

tourist_details_info.xml将父高度从match_parent设置为特定高度(100dp或其他)或将wrap_content设为android:layout_height="match_parent"

答案 2 :(得分:1)

这是每个人在使用recyclerView时最常犯的错误。您不必在onBindViewHolder中使用位置,而必须使用

holder.getAdapterPosition()
从列表中获取数据时

。您在onBindViewHolder中使用的位置是屏幕上项目的位置,该位置将限制为当前屏幕上的最大项目数。

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
    try {
        holder.displayName.setText(list.get(holder.getAdapterPosition().toUpperCase());
    } 
    catch (Exception e) {
        AxeltaLogger.err("error>>>" + e);
    }
}

希望这有帮助。

答案 3 :(得分:1)

我现在感觉很蠢,但是也许我可以帮助别人:

我的问题是ORIENTATION设置为HORIZONTAL,因为我从其他应用程序位置复制并粘贴,将其更改为VERTICAL效果很好。

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

答案 4 :(得分:-1)

我遇到了相同的错误,原因与@Acaua所述相同。我也使用了水平线性布局,因此请务必进行检查。

答案 5 :(得分:-1)

问题出在ScrollingView上。当我们在其中使用RecyclerView时,经常会发生这种情况。

您只需使用android.core.widget.NestedScrollView更改ScrollingView。