我有RecyclerView的RecyclerViewActivity和数据:
// get a reference to recyclerView
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
// this is data for recyclerview
CardData cardData[] = {
new CardData("Bread", R.drawable.bread),
new CardData("Dairy", R.drawable.dairy),
new CardData("Meat", R.drawable.meat) ...}
每个CardData使用简单的ListView连接到不同的Activity。
现在我使用Shared Preferences和boolean变量来检查每个ListView中是否有一些项目。检查完成后 - 将true / false值传递给RecyclerViewActivity:
SharedPreferences pref = getSharedPreferences("filename", MODE_PRIVATE);
Boolean a = pref.getBoolean("key1", false);
Boolean b = pref.getBoolean("key2", false);
Boolean c = pref.getBoolean("key3", false);
现在我需要做的是根据a / b / c值显示CardData 。如果我收到 a:true - 需要在我的数据集中显示一些额外的图像指示器。这样的事情:
CardData cardData[] = {
if (!a) {
new CardData("Bread", R.drawable.bread, R.drawable.indicator)
}
else {
new CardData("Bread", R.drawable.bread) };
if (!b) {
new CardData("Dairy", R.drawable.dairy, R.drawable.indicator)
}
else {
new CardData("Dairy", R.drawable.dairy};
...
}
问题是我现在不知道在哪里以及如何设置这个条件。像上面的CardData里面它确实无效 - 给我一个语法错误..
任何帮助都将不胜感激!
答案 0 :(得分:1)
问题是你没有把它分解成更小,更易于管理的步骤。
你可以这样做:
// initialise the array with size 3
CardData cardData[] = new CardData[3];
// start adding elements now
// insert first object by checking flag "a"
if (a) {
cardData[0] = new CardData("Bread", R.drawable.bread);
}
else {
cardData[0] = new CardData("Bread", R.drawable.bread, R.drawable.indicator);
}
// insert second object by checking flag "b"
if (b) {
cardData[1] = new CardData("Dairy", R.drawable.dairy);
}
else {
cardData[1] = new CardData("Dairy", R.drawable.dairy, R.drawable.indicator);
}
// and so on...