Java 无法在可扩展列表中更新数据

Java 无法在可扩展列表中更新数据,java,android,expandablelistadapter,Java,Android,Expandablelistadapter,我正在使用Volley调用三个JSONRequests,并且在请求的每个响应中都会调用此方法。此方法仅在三个响应都就绪时执行。但是当我尝试更新可扩展列表时,它无法显示在屏幕上。有人能看出我做错了什么吗 private void updateWhenReady(){ System.out.println(validCurrent+ " " + validDaily + " " + validHourly ); if(validCurrent && validDa

我正在使用
Volley
调用三个
JSONRequests
,并且在请求的每个响应中都会调用此方法。此方法仅在三个响应都就绪时执行。但是当我尝试更新可扩展列表时,它无法显示在屏幕上。有人能看出我做错了什么吗

private void updateWhenReady(){
    System.out.println(validCurrent+ " " +  validDaily + " " + validHourly );

    if(validCurrent && validDaily && validHourly)
    {


        System.out.println("in");


        for (WeatherCondition wc: dailyResponseList)
        {
            ArrayList<WeatherCondition> tempList = new ArrayList<>();
            for(WeatherCondition w: hourlyResponseList)
            {
                if(w.getDate().equalsIgnoreCase(wc.getDate()))
                {
                    tempList.add(w);
                }
            }


                weatherList.put(wc,tempList);

        }
        for (WeatherCondition weatherCondition: weatherList.keySet())
        {
            System.out.println(" +   " + weatherCondition.getDate());
        }


        weatherList = dbHelper.getWeatherConditionsHashMap();
        hourlyList = new ArrayList<WeatherCondition>(weatherList.keySet());
        adapter = new WeatherSearchListAdapter(getActivity().getApplicationContext(), weatherList, hourlyList);
        expList.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        System.out.println(validCurrent + " " + validDaily + " " + validHourly);

        validCurrent = false;
        validDaily = false;
        validHourly = false;
    }

}

getChildView

使用
fragment\u daily\u list\u parent充气


复制过去的错误?

getChildView

使用
fragment\u daily\u list\u parent充气


复制过去的错误?

在逻辑开始之前进行变量初始化-

private void updateWhenReady(){
System.out.println(有效电流+“”+有效日期+“”+有效小时);
weatherList=dbHelper.getWeatherConditionsHashMap();
hourlyList=newarraylist(weatherList.keySet());
adapter=新的WeatherSearchListAdapter(getActivity().getApplicationContext(),weatherList,hourlyList);
System.out.println(有效电流+“”+有效日期+“”+有效小时);
if(有效当前和有效当前和有效小时)
{   
系统输出打印项次(“输入”);
用于(天气状况wc:dailyResponseList)
{
ArrayList tempList=新的ArrayList();
用于(天气条件w:hourlyResponseList)
{
if(w.getDate().equalsIgnoreCase(wc.getDate()))
{
圣殿骑士。添加(w);
}
}
天气表。放置(wc,圣殿骑士);
}
for(WeatherCondition:weatherList.keySet())
{
System.out.println(“+”+weatherCondition.getDate());
}
//你需要重置这些吗?如果三个中只有两个是真的呢?
有效电流=假;
有效=假;
有效小时=假;
}
}
expList.setAdapter(适配器);
/*如果每次调用*updateWhenReady*时都设置适配器,则无需notifyDataSetChanged,因为它是一个新的适配器,布局将被重新绘制*/
//adapter.notifyDataSetChanged();
}

在逻辑启动之前进行变量初始化-

private void updateWhenReady(){
System.out.println(有效电流+“”+有效日期+“”+有效小时);
weatherList=dbHelper.getWeatherConditionsHashMap();
hourlyList=newarraylist(weatherList.keySet());
adapter=新的WeatherSearchListAdapter(getActivity().getApplicationContext(),weatherList,hourlyList);
System.out.println(有效电流+“”+有效日期+“”+有效小时);
if(有效当前和有效当前和有效小时)
{   
系统输出打印项次(“输入”);
用于(天气状况wc:dailyResponseList)
{
ArrayList tempList=新的ArrayList();
用于(天气条件w:hourlyResponseList)
{
if(w.getDate().equalsIgnoreCase(wc.getDate()))
{
圣殿骑士。添加(w);
}
}
天气表。放置(wc,圣殿骑士);
}
for(WeatherCondition:weatherList.keySet())
{
System.out.println(“+”+weatherCondition.getDate());
}
//你需要重置这些吗?如果三个中只有两个是真的呢?
有效电流=假;
有效=假;
有效小时=假;
}
}
expList.setAdapter(适配器);
/*如果每次调用*updateWhenReady*时都设置适配器,则无需notifyDataSetChanged,因为它是一个新的适配器,布局将被重新绘制*/
//adapter.notifyDataSetChanged();
}

实际上,他们都使用相同的片段片段\u daily\u list\u parent来显示数据。实际上,他们都使用相同的片段片段\u daily\u list\u parent来显示数据。不,它仍然不显示任何内容……:谢谢你看!:)它仍然无法更新可扩展的listview。我已经在…上传了完整的课程,但仍然没有显示任何内容…:/谢谢你看!:)它仍然无法更新可扩展的listview。我已经上传了完整的课程在。。。
public class WeatherSearchListAdapter extends BaseExpandableListAdapter {
    private Context ctx;
    private HashMap<WeatherCondition, List<WeatherCondition>> weatherList;
    private List<WeatherCondition> list;


    public WeatherSearchListAdapter(Context ctx, HashMap<WeatherCondition, List<WeatherCondition>> parentList, List<WeatherCondition> list){
        this.weatherList = parentList;
        this.list = list;
        this.ctx = ctx;

    };



    @Override
    public int getGroupCount() {
        return list.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {

        return weatherList.get(list.get(groupPosition)).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
    }

    @Override
    public Object getChild(int parent, int child) {
        return weatherList.get(list.get(parent)).get(child);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int parent, int child) {
        return child;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        WeatherCondition groupWeatherCondition = (WeatherCondition) getGroup(groupPosition);
        if(convertView == null)
        {
            LayoutInflater inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflator.inflate(R.layout.fragment_daily_list_parent, parent, false);
        }



        ImageView weatherIconIdIV = (ImageView) convertView.findViewById(R.id.weatherIconIV);
        ImageView windIconIdIV = (ImageView) convertView.findViewById(R.id.windDirectionIV);
        TextView humidityTV = (TextView) convertView.findViewById(R.id.humitityListText);
        TextView rainTV = (TextView) convertView.findViewById(R.id.rainListText);
        TextView windDirectionTV = (TextView) convertView.findViewById(R.id.windDirectionText);
        TextView windSpeedTV = (TextView) convertView.findViewById(R.id.windSpeedText);
        TextView maxTempTV = (TextView) convertView.findViewById(R.id.maxTempListText);
        TextView minTempTV = (TextView) convertView.findViewById(R.id.minTempListText);
        TextView dateTV = (TextView) convertView.findViewById(R.id.dateListText);

        String name = groupWeatherCondition.getWeatherIconId();
        int weatherIconId = ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName());
        weatherIconIdIV.setImageResource(weatherIconId);


        String name1 = groupWeatherCondition.getWind().getWindIconId();
        int windIconId = ctx.getResources().getIdentifier(name1, "drawable", ctx.getPackageName());
        windIconIdIV.setImageResource(windIconId);

         humidityTV.setText(groupWeatherCondition.getHumidity());
         rainTV.setText(groupWeatherCondition.getRain());
         windDirectionTV.setText(groupWeatherCondition.getWind().getWindDirection());
         windSpeedTV.setText(groupWeatherCondition.getWind().getSpeed());
         maxTempTV.setText(groupWeatherCondition.getMaxTemp());
         minTempTV.setText(groupWeatherCondition.getMinTemp());
         dateTV.setText(groupWeatherCondition.getDate());

         convertView.setBackgroundColor(Color.parseColor("#5E5E5E"));

         return convertView;

    }

    @Override
    public View getChildView(int parent, int child, boolean isLastChild, View convertView, ViewGroup parentView) {
        WeatherCondition childWeatherCondition = (WeatherCondition) getChild(parent, child);
        if(convertView == null)
        {
            LayoutInflater inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflator.inflate(R.layout.fragment_daily_list_parent, parentView, false);
        }

        ImageView weatherIconIdIV = (ImageView) convertView.findViewById(R.id.weatherIconIV);
        ImageView windIconIdIV = (ImageView) convertView.findViewById(R.id.windDirectionIV);
        TextView humidityTV = (TextView) convertView.findViewById(R.id.humitityListText);
        TextView rainTV = (TextView) convertView.findViewById(R.id.rainListText);
        TextView windDirectionTV = (TextView) convertView.findViewById(R.id.windDirectionText);
        TextView windSpeedTV = (TextView) convertView.findViewById(R.id.windSpeedText);
        TextView maxTempTV = (TextView) convertView.findViewById(R.id.maxTempListText);
        TextView minTempTV = (TextView) convertView.findViewById(R.id.minTempListText);
        TextView dateTV = (TextView) convertView.findViewById(R.id.dateListText);

        String name = childWeatherCondition.getWeatherIconId();
        int weatherIconId = ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName());
        weatherIconIdIV.setImageResource(weatherIconId);


        String name1 = childWeatherCondition.getWind().getWindIconId();
        int windIconId = ctx.getResources().getIdentifier(name1, "drawable", ctx.getPackageName());
        windIconIdIV.setImageResource(windIconId);

        humidityTV.setText(childWeatherCondition.getHumidity());
        rainTV.setText(childWeatherCondition.getRain());
        windDirectionTV.setText(childWeatherCondition.getWind().getWindDirection());
        windSpeedTV.setText(childWeatherCondition.getWind().getSpeed());
        maxTempTV.setText(childWeatherCondition.getMaxTemp());
        minTempTV.setText(childWeatherCondition.getMinTemp());
        dateTV.setText(childWeatherCondition.getDate());

        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}