我有一个片段类,它使用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仍然可见。
请帮助。预先感谢。
答案 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);