如何从片段隐藏Recycleview的行项目

时间:2019-05-03 04:19:50

标签: android android-fragments fragment

我有一个片段类,它使用Recycleview显示“文本”和“图像”列表。 如何访问Recycleview行项目并将自定义文本设置为任何Textview或隐藏片段类中的所需Textview。

这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:paddingBottom="4dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:paddingTop="4dp">
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none" />

  <include
    android:id="@+id/include_tag"
    layout="@layout/row_item"/>
 </FrameLayout>

并且我的行项目布局为

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res   /android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent">

    <TextView
        android:id="@+id/flower_Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textStyle="bold"
        android:maxLines="1"
        android:layout_centerInParent="true"
        android:gravity="center_vertical|center_horizontal"
        android:textAlignment="center"
        android:textColor="#E91E63"
        android:fontFamily="sans-serif-condensed"
        android:text="Sagar Rawal"/>

            <TextView
                android:layout_marginTop="8dp"
                android:id="@+id/flower_details"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:textStyle="bold"
                android:maxLines="3"
                android:textColor="#673AB7"
                android:text="This Text need to Be Change "/>



</RelativeLayout>

和我的Fragment类

 public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
   final View view = inflater.inflate(R.layout.activity_main, container, false);



    View test1View = view.findViewById(R.id.include_tag);
    mhideText = (TextView) test1View.findViewById(R.id.flower_details);
    mhideText.setVisibility(View.INVISIBLE);

return view;

但是它不起作用。并且Textview仍然可见。

请帮助。预先感谢。

2 个答案:

答案 0 :(得分:0)

您必须具有自定义ViewHolder,该自定义ViewHolder应该扩展RecyclerView.ViewHolder。在ViewHolder中,您可以链接行项目,并且可以从行布局访问所有视图。 您的自定义ViewHolder外观如​​下:

public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView textView;
    public MyViewHolder(TextView v) {
        super(v);
        textView = v;
        //Note: To set custom text
        textView.setText("My custom text");

        //Note: To hide TextView remove comment from below line
        //textView.setVisibility(View.GONE);  
    }
}

以上代码将示例ViewHolder显示为MyViewHolder,您可以在其中访问视图。 如果将父布局传递给MyViewHolder而不是传递TextView,则可以使用v.findViewById(R.id.xxx)

查找子视图。

您的适配器应包含类似以下代码:

@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
    // create a new view
    TextView v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.my_text_view, parent, false);
    ...
    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}

在上述代码段中,通过传递视图 TextView 创建MyViewHolder实例。您可以从行布局中将父布局的RelativeLayout 传递给

使用此ViewHolder对视图执行任何操作,例如将自定义文本设置为TextView,或者可以根据需要隐藏TextView。

要引用完整的示例,请遵循android文档或单击here

要实现ViewHolder与片段之间的通信,可以使用Interface。

谢谢!

答案 1 :(得分:0)

尝试这样做:

rowview = inflater.inflate(R.layout.row_item, container, false);
mhideText = (TextView)rowview.findViewById(R.id.flower_details);
mhideText.setVisibility(View.INVISIBLE);