Android 在异步响应后更新片段中的列表

Android 在异步响应后更新片段中的列表,android,android-fragments,Android,Android Fragments,我有一个包含项目列表的片段。我正在尝试根据异步api响应更新列表。我的条件逻辑工作正常,日志消息工作正常。每隔几次列表都会更新一次,但并不一致 如何确保列表正确更新 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup v = (ViewGroup) inflater.inflate(R.layout.dea

我有一个包含项目列表的片段。我正在尝试根据异步api响应更新列表。我的条件逻辑工作正常,日志消息工作正常。每隔几次列表都会更新一次,但并不一致

如何确保列表正确更新

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    ViewGroup v = (ViewGroup) inflater.inflate(R.layout.deal_container,
            container, false);
    loadContent(v);

    return v;
}

/**
 * Load content for the activity .
*/
private void loadContent(View v) {
    list = (ListView) v.findViewById(R.id.listView1);
    info = new ArrayList<DataDeals>();

    info.add(new DataDeals(R.drawable.daily_deal_pic1,
            getString(R.string.blue_mountains),
            getString(R.string.australian), "150", "100", "45"));

    APICaller.makeAPICall("country-deals",
            "Default Message", Collections.<String, Object>emptyMap(),
            new Target.TargetCallback<String>() {

                @Override
                public void call(final String content) {
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (content.equals("us")) {

                                Log.d("US is calling!----", content);
                                info.add(new DataDeals(R.drawable.daily_deal_pic1,
                                        getString(R.string.blue_mountains),
                                        getString(R.string.liberty), "150", "100", "45"));

                            } else if (content.equals("uk")) {

                                Log.d("UK is calling----", content);
                                info.add(new DataDeals(R.drawable.london_eye,
                                        getString(R.string.blue_mountains),
                                        getString(R.string.londoneye), "150", "100", "1000"));


                            } else if (content.equals("aus")) {

                                Log.d("Australia is calling--", content);
                                info.add(new DataDeals(R.drawable.london_eye,
                                        getString(R.string.blue_mountains),
                                        getString(R.string.australian), "100", "75", "145"));

                            }
                        }
                    });
                }
            });


    adapter1 = new DealItemAdapter(getActivity(), info);
    list.setAdapter(adapter1);
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            launchActivity(position, info);
        }
    });

private void launchActivity(final int position, List<DataDeals> info) {
    startActivity(new Intent(getActivity().getApplicationContext(),
            BuyScreen.class)
            .putExtra("title", info.get(position).getTxt1()));
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图组v=(视图组)充气器。充气(R.layout.deal_容器,
货柜(虚假);;
装载量(v);
返回v;
}
/**
*加载活动的内容。
*/
私有void loadContent(视图v){
列表=(ListView)v.findViewById(R.id.listView1);
info=newarraylist();
信息添加(新数据交易(R.drawable.daily_deal_pic1,
getString(R.string.蓝山),
getString(R.string.australian)、“150”、“100”、“45”);
APICaller.makeAPICall(“国家交易”,
“默认消息”,Collections.emptyMap(),
新的Target.TargetCallback(){
@凌驾
公共void调用(最终字符串内容){
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
如果(内容等于(“美国”)){
Log.d(“美国在呼叫!-----”,内容);
信息添加(新数据交易(R.drawable.daily_deal_pic1,
getString(R.string.蓝山),
getString(R.string.liberty)、“150”、“100”、“45”);
}else if(内容等于(“英国”)){
Log.d(“英国正在呼叫----”,内容);
信息添加(新数据交易(R.drawable.london_eye,
getString(R.string.蓝山),
getString(R.string.londoneye),“150”、“100”、“1000”);
}else if(内容等于(“澳大利亚”)){
Log.d(“澳大利亚正在呼叫--”,内容);
信息添加(新数据交易(R.drawable.london_eye,
getString(R.string.蓝山),
getString(R.string.australian)、“100”、“75”、“145”);
}
}
});
}
});
adapter1=新的DealItemAdapter(getActivity(),info);
列表.设置适配器(适配器1);
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
启动活动(位置、信息);
}
});
私有无效启动活动(最终整数位置,列表信息){
startActivity(新意图)(getActivity().getApplicationContext(),
BuyScreen.class)
.putExtra(“title”,info.get(position.getTxt1());
}

adapter1.notifyDataSetChanged();@Ram,请您参考我的答案。我对本地数据库做了同样的操作,您可以对异步任务做同样的操作。