在ListView Android中加载更多选项

时间:2015-06-13 07:05:03

标签: android listview

Android ListView] ListView应显示前10个结果,然后它应显示类似" LoadMore"当我点击“LoadMore”选项'然后listview将再显示10个结果,再次显示" LoadMore"选项应该显示..怎么做。

XML

public void setData() {
    mobileList = new ArrayList<String>();
    mAdapter = new ListAdapter(this);
    for (int i = 0; i < str.length; i++) {
        mAdapter.addItem(str[i]);
        mobileList.add(str[i]);
    }
    Button btnLoadMore = new Button(this);
    btnLoadMore.setText("Load More");
    lv.addFooterView(btnLoadMore);
    lv.setAdapter(mAdapter);
    btnLoadMore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // Starting a new async task
            //new loadMoreListView().execute();
        }
    });

AdapterClass

set

ActivityClass

setlocal enabledelayedexpansion
set objdir=U:\mtproject\obj\
set backupdir=E:\backupDir\DefBackup\

for /r %objdir% %%f in (*.def) do (     
        set new_def_path=%backupdir%!%%f:%objdir%=!
        echo !new_def_path!     
)

现在我还需要做些什么来展示loadmore选项

2 个答案:

答案 0 :(得分:1)

为ListView添加FooterView,如下所示

lv.addFooterView(footerView);

按钮作为footerView并写入 onClick ()以加载剩余的项目。

更新:

您正在将数据存储在ArrayList中,但您没有在任何地方使用,只需在 onClick ()

中编写以下内容
for (int i = 0; i < str.length; i++) {
    mAdapter.addItem(str[i]);
}

希望这会对你有所帮助。

答案 1 :(得分:0)

只需使用此代码...我已根据您的问题编辑了您的代码......

public class ListAdapter extends BaseAdapter {

    private ArrayList<String>   mData;//   = new ArrayList<String>();
    private LayoutInflater      mInflater;

    public ListAdapter(Context context,ArrayList<String> data) {
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mData=data;
    }

    public void addItem(String item) {
        mData.add(item);
        notifyDataSetChanged();
    }

    public int getCount() {
        return mData.size();
    }

    public String getItem(int position) {
        return mData.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        View row=convertView;

        if (row == null) {  
            row=mInflater.inflate(R.layout.mobile_page, parent, false);
            holder=new ViewHolder(row);
            row.setTag(holder);
        } else {
            holder = (ViewHolder) row.getTag();
        }

        holder.textView.setText(mData.get(position).toString());
        return row;
    }

    public class ViewHolder {
        public TextView textView;

        public ViewHolder(View v) {
            textView=(TextView)v.findViewById(R.id.text);
        }
    }

}


package com.example.androidexam;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {

    String str[]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20",
            "21","22","23","24","25","26","27","28","29"};
    ListAdapter mAdapter;
    ArrayList<String> mobileList;
    int index=0;
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.subCategory);

        setData();

    }
    public void setData() {

        mobileList = new ArrayList<String>();


        if(str.length<=10)
        {
            for (int i = 0; i < str.length; i++) {
               /* mAdapter.addItem(str[i]);*/
                mobileList.add(str[i]);
            }
        }else
        {
            for (int i = 0; i <10; i++) {
                   /* mAdapter.addItem(str[i]);*/
                    mobileList.add(str[i]);
                    index=i;
                }
        }


        mAdapter=new ListAdapter(this, mobileList);
        Button btnLoadMore = new Button(this);
        btnLoadMore.setText("Load More");
        lv.setAdapter(mAdapter);
        lv.addFooterView(btnLoadMore);


        btnLoadMore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                    for (int i = index+1; i < str.length; i++) {
                           /* mAdapter.addItem(str[i]);*/
                            mobileList.add(str[i]);

                            index=i;

                            if((i+1)%10==0)
                                break;
                        }

                     mAdapter=new ListAdapter(MainActivity.this, mobileList);
                     lv.setAdapter(mAdapter);

            }
        });
    }
}