【问题标题】:Android RecyclerView pass and display Item data depending on conditionAndroid RecyclerView 根据条件传递和显示Item数据
【发布时间】:2016-10-12 06:44:22
【问题描述】:

我有一个 RecyclerViewActivity 和 RecyclerView 的数据:

     // 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 和布尔变量来检查每个 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 内部它不起作用 - 给我一个语法错误..

任何帮助将不胜感激!

【问题讨论】:

  • 这就是我的理解——你试图将CardData 对象添加到数组中,而构造函数的选择取决于布尔值 a、b、c 的值。对吗?
  • 是的。我想根据 a,b,c 的值添加它们

标签: java android arrays if-statement


【解决方案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...

【讨论】:

  • 我已根据您的建议更改了我的代码,现在可以使用了!非常感谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
相关资源
最近更新 更多