我使用TextView,RecyclerView创建了一个Activity。 我想从RecyclerView内部访问父活动TextView。 请注意我已经在RecyclerView中加载了数据。
请提供访问父活动TextView的任何解决方案。
参考此代码,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="50dip"
android:layout_marginTop="20dip"
android:background="@android:color/holo_orange_dark"
android:text="MY TEXT VIEW"
android:textAlignment="center"
android:textStyle="bold"
android:textSize="20sp"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
我通过自定义适配器
成功地使用RecyclerView(rv)加载了一些数据rv.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new custom_Adapter(this,loadData());
rv.setAdapter(mAdapter)
现在,从我的自定义适配器“onBindViewHolder”内部我想访问我的父活动TextView(tv)。请提示
@Override
public void onBindViewHolder(final CartViewHolder holder, int position) {
....
}
答案 0 :(得分:2)
理想情况下,在父活动的onCreate()中,您将分配一个实例变量来保存对TextView的引用。
TextView textView; // Your TextView
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialize TextView so you can access it later
textView = (TextView) findViewById(R.id.text_message);
}
}
现在,您可以在适配器的重写方法中访问TextView。
@Override
public void onBindViewHolder(final CartViewHolder holder, int position) {
textView.setText("text here");
}
答案 1 :(得分:1)
应该在适配器类中创建父类的对象,并且应该将其设置为等于适配器类的构造函数中的父类的引用。 您的Adapter类构造函数应该是这样的:
ParentActivity mParentActivity;
public custom_Adapter(ParentActivity parentActivity,Something Else){
this.mParentActivity=parentActivity;
}
mParentActivity是父类的对象,可用于访问父类中的任何公共内容,例如 mParentActivity.name