我已经从服务器解析了Json数据。我在列表视图中显示所有数据,并在ListView
下面加载了更多选项。现在,当我单击加载更多选项时,此应用程序将重新加载整个列表,并且未显示以前的列表数据。请帮我找出解决方案。这是页脚视图点击监听器:
lFooter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
page += 1;
new ParseIssues().execute();
listView.removeFooterView(v);
}
});
在上方代码ParseIssues
类中解析json
值并显示ListView
中的所有数据以下是onPostExecute
AsynkTask
的代码class:
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if(page < totalPage){
listView.addFooterView(v);
}
listAdapter = new ListAdapterForSearch(activity, mainList);
listView.setAdapter(listAdapter);
// get listview current position - used to maintain scroll position
int currentPosition = listView.getFirstVisiblePosition();
listView.setSelection(currentPosition);
}
这是 BaseAdapter 类:
public class ListAdapterForSearch extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ListAdapterForSearch(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = LayoutInflater.from(activity);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.list_row_item, null);
}
TextView title = (TextView)vi.findViewById(R.id.title);
HashMap<String, String> hash = new HashMap<String, String>();
hash = data.get(position);
title.setText(hash.get("title"));
return vi;
}
}
答案 0 :(得分:0)
您的问题的答案取决于适配器使用的变量&#34; mainList&#34;。您需要向其添加新数据,基本上此列表需要包含您要在ListView中显示的所有数据。
答案 1 :(得分:0)
您应该在创建之后设置适配器,之后首先将加载的数据添加到主列表(添加新的加载数据)&amp;然后加载通知适配器,如listadapter.notifydatachange()
编辑:因为每次你创建适配器都是你遇到这个问题的原因,而是在加载后才通知你的适配器..
答案 2 :(得分:0)
检入您的代码,您可能已清除mainList
。