我正在制作一个应用程序,在其中我从URL接收一些JSON数据,如此Image所示。基本上每个日期数组中都有5个对象,我正在使用这段代码从每个日期数组中获取会话并将会话转换为值

 JSONObject jsonObject = new JSONObject(response);
 JSONObject dataObj = jsonObject.getJSONObject("data");
      Iterator<String> iter = dataObj.keys();
      while (iter.hasNext()) {
              key = iter.next();
              JSONArray datesArray = dataObj.getJSONArray(key);
              sessionsfrom = new ArrayList<String>();

              JSONObject datesObjectt = datesArray.getJSONObject(4);

              for (int i = 0; i < datesArray.length(); i++) {
                  JSONObject datesObject = datesArray.getJSONObject(i);
                  sessionsfrom.add(datesObject.getString("session_from") + " - " +datesObject.getString("session_to") );
                  mBaseRecyclerAdapter.setItems(sessionsfrom);
                                    }


在最后一行中,我将所有会话和会话到值的值存储在arraylist中,并放入回收器视图的适配器中。这些会话正在应用程序中创建时隙,如此Image中所示
现在我想要的是我必须将json中的bookingFound值保存到会话与会话之间的值,即它不会显示在应用中,但是在每个广告位的背景中,bookingFoung的每个值都必须存储,以便在填充viewholder I时可以检查哪些bookingFound插槽返回true,哪些返回false,以便在bookingFound true的情况下将插槽的颜色更改为灰色

要填充视图持有人,我需要以下代码

   private BaseRecyclerAdapter<String, CourtDetailsTimeViewHolder> mBaseRecyclerAdapter = new BaseRecyclerAdapter<String, CourtDetailsTimeViewHolder>(CourtDetailsTimeViewHolder.class, R.layout.item_court_details_availability_time) {

    @Override
    protected void populateViewHolder(CourtDetailsTimeViewHolder viewHolder, String model, int position) {
       // SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
        //String name = preferences.getString("slotfound", "");
        viewHolder.mCheckBox.setOnCheckedChangeListener(null);
        viewHolder.mCheckBox.setText(model);
        viewHolder.mCheckBox.setChecked(getChecked(model));
        /*for (int i = 0; i < bookingcheck.size(); i++) {
            if (bookingcheck.get(i).contains("true")) {
                viewHolder.mCheckBox.setEnabled(false);
                viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr_bg_cb_challenges_details_disable);
            } else {
                viewHolder.mCheckBox.setEnabled(true);
                viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr_bg_cb_challenges_details);
            }
        }*/

    }
};


在这段代码中,被注释的部分是我尝试过的,但是没有用。我将bookingFound值放入bookingcheck arraylist中,然后检查它是否包含true,然后禁用插槽,否则启用,但它不起作用...请帮助

结论

1-商店bookingFound json值,就像会话从和会话到值

2-使用该值来启用或禁用应用程序上的插槽

最佳答案

快速修复

采用

datesObject.getString("session_from") + " - " +datesObject.getString("session_to")+"$"+datesObject.get("bookingFound").getAsBoolean()


显示会话时使用

String Session = "02:00 AM - 02:30 AM$true";
String[] separated = currentString.split("$");
separated[0]; // this will contain "02:00 AM - 02:30 AM"
separated[1]; // this will contain "true"

for (int i = 0; i < bookingcheck.size(); i++) {
            if (bookingcheck.get(i).contains("true")) {
                viewHolder.mCheckBox.setEnabled(false);
                viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr_bg_cb_challenges_details_disable);
            } else {
                viewHolder.mCheckBox.setEnabled(true);
                viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr_bg_cb_challenges_details);
            }
        }

10-06 05:56