如何从recyclerview适配器内部访问外部VIEWS活动

问题描述:

我使用TextView,RecyclerView创建了一个活动。 我想从RecyclerView内部访问父活动TextView。 请注意我已经在RecyclerView中加载数据。如何从recyclerview适配器内部访问外部VIEWS活动

请提供任何解决方案来访问父活动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) { 
    .... 
    } 
+1

分享一些代码..! –

+0

你设置了版面充气器,不是吗? (你没有添加代码)...... webweb上有很多示例,这里是一个:https://www.youtube.com/watch?v=Wq2o4EbM74k – AsfK

+0

@AsfK,我已经在RecyclerView中加载数据没有问题。我想访问我的父级活动TextView(电视)。 – Chandrahasan

父类的目的,应在适配器类被创建并且应该被设定为等于父类的在适配器类的构造函数的参考。 适配器类的构造函数应该是这样的:

ParentActivity mParentActivity; 
    public custom_Adapter(ParentActivity parentActivity,Something Else){ 
     this.mParentActivity=parentActivity; 
    } 

mParentActivity是父类的对象,可用于访问任何公众在你的父类像mParentActivity.name

理想情况下,您的父级活动的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); 
    } 
} 

现在您将能够从Adapter的重写方法中访问TextView。

@Override 
public void onBindViewHolder(final CartViewHolder holder, int position) { 
    textView.setText("text here"); 
}