如何从活动中引用CardView中的View?

时间:2016-09-08 09:31:45

标签: android material-design android-cardview

我在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);
    }



}

1 个答案:

答案 0 :(得分:0)

因此,您不希望更改视图,但希望更新列表中视图的文本值。

您无法通过尝试在recyclerView中查找视图并更改文本来直接执行此操作。适配器负责为列表提供值。因此,您需要更新适配器中的数据集,并调用适配器上的notifyDataSetChanged方法之一来更新recyclerView。

这种设计的一大优点是它将视图置于缓存中,以便多次重复使用它们,而无需再次膨胀和构建它们。这是一个巨大的性能提升。

您需要阅读docs和一些教程以更好地理解适配器设计模式。