2016-09-08 3 views
0

У меня есть CardView с представлениями внутри RecyclerView. Я создал адаптер, в котором активы привязаны к Views и все работает. Теперь я хотел бы изменить эти Представления из своей деятельности. Это простой способ сделать это?Как получить ссылку на просмотр внутри 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() default string "godzina" инициализируется и в initializeAdapter() я отправляю его в Adapter, где TextView получает это значение. После этой операции я хотел бы изменить текст в TextView из Activity. Например: «godzina» -> «string». –

ответ

0

Поэтому вы не хотите изменять представления, но вы хотите обновлять текстовые значения видов в своем списке.

Вы не можете сделать это напрямую, пытаясь найти Views в recyclerView и изменить текст. Адаптер отвечает за предоставление значений в вашем списке. Поэтому вам необходимо обновить набор данных в адаптере и вызвать один из методов notifyDataSetChanged на адаптере, чтобы обновить recyclerView.

Большое преимущество этого дизайна заключается в том, что оно размещает представления в кеше, чтобы повторно использовать их несколько раз, без необходимости накачивать и конструировать их снова. Это огромное улучшение производительности.

Вам необходимо прочитать docs и некоторые учебные пособия, чтобы лучше понять шаблон дизайна адаптера.

+0

Вот о чем я думал. Спасибо за помощь. –