我在RecyclerView中有CardView with Views。我已经创建了适配器,其中资产附加到视图,一切正常。现在,我想从我的活动中更改这些视图。这样做有什么简单的方法吗?
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 :(得分:0)
因此,您不希望更改视图,但希望更新列表中视图的文本值。
您无法通过尝试在recyclerView中查找视图并更改文本来直接执行此操作。适配器负责为列表提供值。因此,您需要更新适配器中的数据集,并调用适配器上的notifyDataSetChanged方法之一来更新recyclerView。
这种设计的一大优点是它将视图置于缓存中,以便多次重复使用它们,而无需再次膨胀和构建它们。这是一个巨大的性能提升。
您需要阅读docs和一些教程以更好地理解适配器设计模式。