Android 如何添加线性布局,使其始终成为RecyclerView中的第一个元素?

Android 如何添加线性布局,使其始终成为RecyclerView中的第一个元素?,android,android-layout,android-recyclerview,recyclerview-layout,Android,Android Layout,Android Recyclerview,Recyclerview Layout,我有一个带有CardView的RecyclerView,它显示从数据库读取的数据。这没有问题 现在的问题是,我想添加一个线性布局,在同一个RecyclerView中同时包含ImageView和TextView,并使其始终成为RecyclerView中的第一个元素 这就是我想要实现的。RecyclerView中的第一个元素始终是线性布局,不管它下面的CardView中有什么不同 我尝试了本教程,它似乎处理不同的视图类型取决于数据库中的数据,这不是我想要的 我想要的是 1这种线性布局是静态的 2始终

我有一个带有CardView的RecyclerView,它显示从数据库读取的数据。这没有问题

现在的问题是,我想添加一个线性布局,在同一个RecyclerView中同时包含ImageView和TextView,并使其始终成为RecyclerView中的第一个元素

这就是我想要实现的。RecyclerView中的第一个元素始终是线性布局,不管它下面的CardView中有什么不同

我尝试了本教程,它似乎处理不同的视图类型取决于数据库中的数据,这不是我想要的

我想要的是

1这种线性布局是静态的

2始终是RecyclerView中的第一个元素

我在OnCreateViewHolder'中检查ifindex==0,android studio无法识别该索引

 @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if(index== 0) {
            View feedInput = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.feed_input, parent, false);
            return new MyViewHolder(feedInput);
        }else {
            View feedItemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.feed_item, parent, false);
            return new MyViewHolder(feedItemView);
        }
    }

如果需要使linearLayout始终可见,即使已滚动recyclerView,也可以将linearLayout放置在recyclerView之外。 做一些类似于:

<RelativeLayout
--your attribute-->

    <LinearLayout 
    --your attributes-->
        //Your LinearLayout elements here
    </LinearLayout>

    <RecyclerView
    --your attributes--/>

</RelativeLayout>
@Override
public int getItemViewType(int position) {
    if (position == 0)
        return 1;
    else
        return 2;
}
然后在onCreateViewHolder中,根据您的视图类型对不同的布局进行充气


如果需要使linearLayout始终可见,即使已滚动recyclerView,也可以将linearLayout放置在recyclerView之外。 做一些类似于:

<RelativeLayout
--your attribute-->

    <LinearLayout 
    --your attributes-->
        //Your LinearLayout elements here
    </LinearLayout>

    <RecyclerView
    --your attributes--/>

</RelativeLayout>
@Override
public int getItemViewType(int position) {
    if (position == 0)
        return 1;
    else
        return 2;
}
然后在onCreateViewHolder中,根据您的视图类型对不同的布局进行充气

您应该查找viewType,无索引:

希望这有帮助。

您应该查找viewType,无索引:


希望这能有所帮助。

您可以通过创建一个同时包含LinearLayout和CardView的布局来实现这一点,我们称之为两种布局。保持线性布局的可见性消失

在ViewHolder.make中,首先使LinearLayout可见并移除CardView


您可以通过创建一个同时包含LinearLayout和CardView的布局来实现这一点,我们称之为两种布局。保持线性布局的可见性消失

在ViewHolder.make中,首先使LinearLayout可见并移除CardView


为什么线性布局需要在RecyclerView中?你能把它放在上面吗?@MichaelVescovo我需要它在循环视图中,这样当循环视图被滚动时它可以向上滚动为什么线性布局需要在循环视图中?你能把它放在上面吗?@MichaelVescovo我需要它在循环视图中,这样当循环视图被滚动时它就可以向上滚动意味着ifindex==0然后膨胀我的线性布局,否则膨胀卡片视图,对吗?@是的,确切地说:让我知道它是否有用。我尝试检查ifindex==0,但似乎索引未知,未识别DI将为您提供一个代码示例。给我几分钟意味着ifindex==0然后膨胀我的线性布局,否则膨胀卡片视图,对吗?是的,准确地说:让我知道它是否有用。我尝试检查ifindex==0,但似乎索引未知,无法识别。我将给您一个代码示例。给我几分钟
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = (View) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.both_layout, parent, false);
    // Inflate both the layout.
    ViewHolder vh = new ViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    if (position == 0) {
        holder.makeFirst();
    }
}
public void makeFirst() {
    linearlayout.setVisibility(VISIBLE);
    cardView.setVisibility(GONE);
}