Android RecyclerView根据条件传递和显示项目数据

时间:2016-06-11 10:45:26

标签: java android arrays if-statement

我有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里面它确实无效 - 给我一个语法错误..

任何帮助都将不胜感激!

1 个答案:

答案 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...