Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将值从json数据存储到arraylist并填充视图持有者_Android_Arrays_Json_Android Recyclerview_Android Viewholder - Fatal编程技术网

Android 将值从json数据存储到arraylist并填充视图持有者

Android 将值从json数据存储到arraylist并填充视图持有者,android,arrays,json,android-recyclerview,android-viewholder,Android,Arrays,Json,Android Recyclerview,Android Viewholder,我正在制作一个应用程序,其中我从url接收一些JSON数据,如图所示。基本上每个日期数组中都有5个对象,我使用这段代码从每个日期数组中获取session from和session to值 JSONObject jsonObject = new JSONObject(response); JSONObject dataObj = jsonObject.getJSONObject("data"); Iterator<String> iter = dataObj.keys(

我正在制作一个应用程序,其中我从url接收一些JSON数据,如图所示。基本上每个日期数组中都有5个对象,我使用这段代码从每个日期数组中获取session from和session to值

 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);
                                    }
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
while(iter.hasNext()){
key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
sessionsfrom=newarraylist();
JSONObject datesObjectt=datesArray.getJSONObject(4);
对于(int i=0;i
在最后一行中,我将所有session from和session to值存储在arraylist中,并放入recycler视图的适配器中。这些会话正在应用程序中创建时间段,如图所示 现在我想要的是,我必须用session from和session to值将bookingFound值从json保存到某个地方,即它不在应用程序中显示,但在每个插槽的背景中,必须存储bookingFoung的每个值,以便在填充viewholder时,我可以检查哪些bookingFound插槽返回true和true如果BookingFind为true,则返回false,以便我可以将插槽的颜色更改为灰色

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

   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);
            }
        }*/

    }
};
private BaseRecyclerAdapter mBaseRecyclerAdapter=新的BaseRecyclerAdapter(CourtDetailsTimeViewHolder.class,R.layout.item\u court\u details\u availability\u time){
@凌驾
受保护的void populateViewHolder(CourtDetailsTimeViewHolder、字符串模型、int位置){
//SharedReferences preferences=PreferenceManager.GetDefaultSharedReferences(getContext());
//String name=preferences.getString(“slotfound”和“”);
viewHolder.mCheckBox.setOnCheckedChangeListener(null);
viewHolder.mCheckBox.setText(模型);
viewHolder.mCheckBox.setChecked(getChecked(model));
/*对于(int i=0;i
在这段代码中,注释部分是我尝试的,但它不起作用。我将BookingFind值放入bookingcheck arraylist中,然后检查它是否包含true,然后禁用插槽,否则启用,但它不起作用…请帮助

结论

1-store bookingFound json值就像session from和session to值一样

2-使用该值启用或禁用应用程序上的插槽,以便快速修复

使用

显示会话时使用

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);
            }
        }
String Session=“02:00am-02:30am$true”;
String[]separated=currentString.split($);
分隔的[0];//这将包含“02:00 AM-02:30 AM”
分隔的[1];//这将包含“true”
对于(int i=0;i
您必须更改一些代码。首先,为会话创建一个自定义对象,以增强代码的性能和设计

public class SessionModel {

    String sessionFrom;
    String sessionTo;
    boolean sessionFound;


    public SessionModel(String sessionFrom, String sessionTo, boolean sessionFound) {
        this.sessionFrom = sessionFrom;
        this.sessionTo = sessionTo;
        this.sessionFound = sessionFound;
    }


    public String getSessionFrom() {
        return sessionFrom;
    }

    public void setSessionFrom(String sessionFrom) {
        this.sessionFrom = sessionFrom;
    }

    public String getSessionTo() {
        return sessionTo;
    }

    public void setSessionTo(String sessionTo) {
        this.sessionTo = sessionTo;
    }

    public boolean isSessionFound() {
        return sessionFound;
    }

    public void setSessionFound(boolean sessionFound) {
        this.sessionFound = sessionFound;
    }
}
然后创建此对象的arraylist,并在适配器“for循环完成后”中使用此arraylist

JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
while(iter.hasNext()){
key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
sessionsfrom=newarraylist();
JSONObject datesObjectt=datesArray.getJSONObject(4);
对于(int i=0;i
在您的适配器中

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

    @Override
    protected void populateViewHolder(CourtDetailsTimeViewHolder viewHolder, SessionModel model, int position) {

        viewHolder.mCheckBox.setOnCheckedChangeListener(null);
        viewHolder.mCheckBox.setText(model.getgetSessionFrom+"-"+model.getSessionTo);
        viewHolder.mCheckBox.setChecked(getChecked(model));

            if (model.get(i).isSessionFound()) {
                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);
            }


    }
};
private BaseRecyclerAdapter mBaseRecyclerAdapter=新的BaseRecyclerAdapter(CourtDetailsTimeViewHolder.class,R.layout.item\u court\u details\u availability\u time){
@凌驾
受保护的void populateViewHolder(CourtDetailsStimeviewHolder viewHolder、SessionModel模型、int位置){
viewHolder.mCheckBox.setOnCheckedChangeListener(null);
viewHolder.mCheckBox.setText(model.getSessionFrom+“-”+model.getSessionTo);
viewHolder.mCheckBox.setChecked(getChecked(model));
if(model.get(i).isSessionFound()){
viewHolder.mCheckBox.setEnabled(false);
viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr\u bg\u cb\u challenges\u details\u disable);
}否则{
viewHolder.mCheckBox.setEnabled(true);
viewHolder.mCheckBox.setBackgroundResource(R.drawable.slctr\u bg\u cb\u challenges\u细节);
}
}
};
但我的问题是n
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<SessionModel>();

    JSONObject datesObjectt = datesArray.getJSONObject(4);

    for (int i = 0; i < datesArray.length(); i++) {
    JSONObject datesObject = datesArray.getJSONObject(i);
    sessionsfrom.add(SessionModel(datesObject.getString("session_from"), datesObject.getString("session_to"), datesObject.getboolean("bookinFound")));
    }
    mBaseRecyclerAdapter.setItems(sessionsfrom);
private BaseRecyclerAdapter<String, CourtDetailsTimeViewHolder> mBaseRecyclerAdapter = new BaseRecyclerAdapter<String, CourtDetailsTimeViewHolder>(CourtDetailsTimeViewHolder.class, R.layout.item_court_details_availability_time) {

    @Override
    protected void populateViewHolder(CourtDetailsTimeViewHolder viewHolder, SessionModel model, int position) {

        viewHolder.mCheckBox.setOnCheckedChangeListener(null);
        viewHolder.mCheckBox.setText(model.getgetSessionFrom+"-"+model.getSessionTo);
        viewHolder.mCheckBox.setChecked(getChecked(model));

            if (model.get(i).isSessionFound()) {
                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);
            }


    }
};