在列表视图中加载更多选项没有在android中显示以前的列表

时间:2014-07-28 06:29:15

标签: android json listview baseadapter

我已经从服务器解析了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;
    }
}

3 个答案:

答案 0 :(得分:0)

您的问题的答案取决于适配器使用的变量&#34; mainList&#34;。您需要向其添加新数据,基本上此列表需要包含您要在ListView中显示的所有数据。

答案 1 :(得分:0)

您应该在创建之后设置适配器,之后首先将加载的数据添加到主列表(添加新的加载数据)&amp;然后加载通知适配器,如listadapter.notifydatachange()

编辑:因为每次你创建适配器都是你遇到这个问题的原因,而是在加载后才通知你的适配器..

答案 2 :(得分:0)

检入您的代码,您可能已清除mainList