2016-09-08 19 views
0

私は、RecyclerViewの中にViews付きのCardViewを持っています。ビューにアセットを添付してすべてを動作させるアダプタを作成しました。今、これらのビューを私の活動から変更したいと思います。それを行う簡単な方法ですか?アクティビティからCardView内のビューへの参照を取得する方法は?

public class MainActivity extends AppCompatActivity { 

    RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 
    private List<Offer>offers; 
    TextView timer; //timer inside CardView 

    private void getViewReferences() { 
     recyclerView = (RecyclerView)findViewById(R.id.mainRecyclerView); 
     timer = (TextView)findViewById(R.id.timer); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getViewReferences(); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 
     initializeData(); 
     initializeAdapter(); 
     timer.setText("13:16"); //NullPointerException here 

    } 
    private void initializeData(){ 
     offers = new ArrayList<>(); 
     offers.add(new Offer("godzina", R.drawable.zdj, 200)); 
     offers.add(new Offer("godzina", R.drawable.zdj)); 

    } 
    private void initializeAdapter() { 
     RecyclerViewAdapter adapter = new RecyclerViewAdapter(offers); 
     recyclerView.setAdapter(adapter); 
    } 



} 
+0

ビューがどのような変更を意味するかの例を挙げることはできますか? – masp

+0

@masp in initializeData()デフォルトの文字列 "godzina"が初期化され、initializeAdapter()でTextViewがこの値を取得するAdapterに送信しています。この操作の後、TextViewのテキストをActivityから変更したいと思います。たとえば、 "godzina" - > "string"などです。 –

答えて

0

したがって、ビューを変更する必要はありませんが、リスト内のビューのテキスト値を更新する必要があります。

recyclerViewでビューを検索してテキストを変更しようとすると、直接この操作を行うことはできません。アダプターはあなたのリストに値を与える責任があります。したがって、アダプターのデータセットを更新し、アダプターのnotifyDataSetChangedメソッドの1つを呼び出して、recyclerViewを更新する必要があります。

このデザインの大きな利点は、ビューをキャッシュに配置することで、ビューを再び膨らませたり構築したりせずに複数回再利用できることです。これはパフォーマンスの大幅な向上です。

アダプターのデザインパターンをよく理解するには、docsといくつかのチュートリアルを読む必要があります。

+0

それは私が考えていたことです。助けてくれてありがとう。 –

関連する問題