Android 在异步响应后更新片段中的列表
我有一个包含项目列表的片段。我正在尝试根据异步api响应更新列表。我的条件逻辑工作正常,日志消息工作正常。每隔几次列表都会更新一次,但并不一致 如何确保列表正确更新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
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,请您参考我的答案。我对本地数据库做了同样的操作,您可以对异步任务做同样的操作。