2016-06-21 110 views
-2

我使用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

回答

0

父類的目的,應在適配器類被創建並且應該被設定爲等於父類的在適配器類的構造函數的參考。 適配器類的構造函數應該是這樣的:

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

mParentActivity是父類的對象,可用於訪問任何公衆在你的父類像mParentActivity.name

1

理想情況下,您的父級活動的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"); 
} 
相關問題