Java 如何根据所选项目更改RecyclerView下面的信息?

Java 如何根据所选项目更改RecyclerView下面的信息?,java,android,android-recyclerview,android-linearlayout,Java,Android,Android Recyclerview,Android Linearlayout,我正在制作一个水平线性布局的回收器视图,它看起来像这样: 正如您可以看到的,在它下面有两个文本视图,当用户按下一个项目时,我想用项目信息填充它们。我以前做过两个适配器来显示菜单,这样当你长时间点击项目时会改变它的布局,但它不会改变下面的信息。管理选定项目的方法通常是使用如下适配器: if (holder instanceof AdaptadorProyectosViewHolder) { ((AdaptadorProyectosViewHolder) holder).tv_no

我正在制作一个水平线性布局的回收器视图,它看起来像这样:

正如您可以看到的,在它下面有两个文本视图,当用户按下一个项目时,我想用项目信息填充它们。我以前做过两个适配器来显示菜单,这样当你长时间点击项目时会改变它的布局,但它不会改变下面的信息。管理选定项目的方法通常是使用如下适配器:

if (holder instanceof AdaptadorProyectosViewHolder) {
        ((AdaptadorProyectosViewHolder) holder).tv_nombreProyecto.setText(nombreProyecto.toString());
        ((AdaptadorProyectosViewHolder) holder).tv_nombreClienteProyecto.setText("UN CLIENTE");

        //When it's a long click the menu is shown in the place of the item
        ((AdaptadorProyectosViewHolder) holder).itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                mostrarMenu(position); //showMenu(position)
                return true;
            }
        });
这样做的目的是改变项目的布局(显示更多信息、选项等),但我希望信息位于回收器视图下方,而不是在项目内部。有办法吗

以下是包含回收器视图的片段的xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Vistas.Proyectos">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_proyectos"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </LinearLayout>
</LinearLayout>

根据您问题中的小细节,这里有一个快速解决方案。 将onClickListener添加到适配器:

public interface OnItemClickListener {
        void onItemClick(int position);
    }

声明侦听器的变量并将其添加到适配器的构造函数:

private final OnItemClickListener listener;
public MyAdapter ( List<Item> items , Context context , OnItemClickListener listener ) {
        mItems = items;
        mContext = context;
        this.listener = listener;
    }
    
将这些添加到适配器后,现在转到承载recyclerview的活动或片段,并实现刚刚创建的onClickListener。在这里,我使用了一个片段:

public class LibraryFragment extends MainActivityFragment implements MyAdapter.OnItemClickListener

adapter = new MyAdapter( mItems , getActivity() , this );
将以下内容添加到新实现的方法中:

@Override
    public void onItemClick(int position)
    {
        mtext.setText(mItems.get(position).getName());
    }
都做完了。 请注意,
mItems
是您的项目列表,
mtext
是承载结果的
TextView
! 另外,请注意
getName()
方法是我创建的一个方法。用您自己的代码替换mItems、mtext和getName! 额外注意:您需要将侦听器添加到片段中的适配器:

public class LibraryFragment extends MainActivityFragment implements MyAdapter.OnItemClickListener

adapter = new MyAdapter( mItems , getActivity() , this );

您可以添加承载recyclerview项目的xml文件吗?这两个文本视图与recyclerview的项目在同一个文件中吗?@PrinceAli我刚刚添加了它。这两个文本视图位于同一文件中。我想我通过使用片段作为适配器的构造函数参数修复了它,它似乎可以工作,但我不确定这是否是正确的方法,让我明白这一点。你想:1。单击RecyclerView项,2。在文本视图中显示单击项目的内容?@PrinceAli非常感谢!我有时间就试试看