Java 使用滚动加载更多向listview添加数据

Java 使用滚动加载更多向listview添加数据,java,android,listview,android-listview,scroll,Java,Android,Listview,Android Listview,Scroll,我正在使用这个库:当滚动到最后时,在我的lisview中添加项目。事实上它是有效的。它加载新数据,但不将其“附加”到listview。它只需重新加载一个新列表。我需要在旧库中添加我的新数据!这就是我到目前为止所做的: 我宣布: String[] provaArr; private LinkedList<String> mList; String[]provaArr; 私有链接列表; 然后: mList=newlinkedlist(); provaArr=(titoli.t

我正在使用这个库:当滚动到最后时,在我的lisview中添加项目。事实上它是有效的。它加载新数据,但不将其“附加”到listview。它只需重新加载一个新列表。我需要在旧库中添加我的新数据!这就是我到目前为止所做的: 我宣布:

String[] provaArr;
    private LinkedList<String> mList;
String[]provaArr;
私有链接列表;
然后:

mList=newlinkedlist();
provaArr=(titoli.toArray(新字符串[0]);
mList.addAll(Arrays.asList(provaArr));
lista=(LoadMoreListView)view.findViewById(R.id.main\u lista);
setOnLoadMoreListener(新的OnLoadMoreListener(){
public void onLoadMore(){
新建ParsingSecondPage().execute();
}
});
和任务:

private class ParsingSecondPage extends AsyncTask<String,String,String> {

        @Override
        protected void onPreExecute()
        {   
            //prima di eseguire il parsing inizializzo gli arraylist
            super.onPreExecute();
            mProgressDialog = new ProgressDialog(getActivity());
            mProgressDialog.setTitle("Loading");
            mProgressDialog.setMessage("please wait...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.show();
            mProgressDialog.setCanceledOnTouchOutside(false);

            titoli = new ArrayList<String>();
            data = new ArrayList<String>();
            categoria = new ArrayList<String>();
            Lurl = new ArrayList<String>();

        }

        @Override
        protected String doInBackground(String... params) {

            if (isCancelled()){
                return null;
            }
            try {

                current += 1;
                BLOG_URL_SECOND = "http://www.page.it/articoli/?pagina="+current;
                Document doc = Jsoup.connect(BLOG_URL_SECOND)
                    .get();
                Elements sezioni = doc.getElementsByClass("archive_box");
                for (Element riga : sezioni) {

                    Element info = riga.getElementsByClass("text").first();
                    // Title
                    titolo = riga.select("h2").text();
                    titoli.add(titolo);

                    // Url
                    String urltitle = riga.select("h2 a").first().attr("abs:href");
                    Lurl.add(urltitle);

                    // Date
                    String date = info.getElementsByClass("date").first().text();
                    System.out.println(date);
                    data.add(date);

                    // categoria
                    String category = info.getElementsByClass("category").first().text();
                    System.out.println(category);
                    categoria.add(category);           

                }

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            for (int i = 0; i < provaArr.length; i++)
                mList.add(provaArr[i]);

            return null;
        }

        @Override
        protected void onPostExecute(String result)
        {

            adapter.notifyDataSetChanged();
            lista.onLoadMoreComplete();
            new LogoSecond().execute();
            mProgressDialog.dismiss();

        }

    }
私有类ParsingSecondPage扩展异步任务{
@凌驾
受保护的void onPreExecute()
{   
//prima di eseguire il il Izzo gli arraylist
super.onPreExecute();
mProgressDialog=newprogressdialog(getActivity());
mProgressDialog.setTitle(“加载”);
设置消息(“请稍候…”);
mProgressDialog.setUndeterminate(false);
mProgressDialog.show();
mProgressDialog.setCanceledOnTouchOutside(false);
titoli=新的ArrayList();
数据=新的ArrayList();
categoria=新的ArrayList();
Lurl=新数组列表();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
如果(isCancelled()){
返回null;
}
试一试{
电流+=1;
BLOG_URL_SECOND=”http://www.page.it/articoli/?pagina=“+电流;
Document doc=Jsoup.connect(BLOG\u URL\u秒)
.get();
Elements sezioni=doc.getElementsByClass(“存档盒”);
对于(元素里加:塞齐奥尼){
Element info=riga.getElementsByClass(“text”).first();
//头衔
titolo=riga.select(“h2”).text();
添加(titolo);
//网址
字符串urlttitle=riga.select(“h2 a”).first().attr(“abs:href”);
加上(标题);
//日期
字符串日期=info.getElementsByClass(“日期”).first().text();
系统输出打印项次(日期);
数据。添加(日期);
//范畴
字符串category=info.getElementsByClass(“category”).first().text();
系统输出打印项次(类别);
类别。添加(类别);
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
for(int i=0;i
因此,当我到达页面末尾时,它调用AsynkTask,但添加项目,并用新数据重新加载页面

适配器:

public class ParsingArrayAdapter extends ArrayAdapter<String>{

    private final static int LAYOUT = R.layout.riga_listview;
    private final static int TITOLO = R.id.riga_listview_titolo;
    private final static int DATA = R.id.riga_listview_data;
    private final static int CATEGORIA = R.id.riga_listview_categoria;
    private final static int IMMAGINE = R.id.imageView1;
    ArrayList<Bitmap> bitmap;
    ArrayList<String> links;
    ArrayList<String> titoli;
    ArrayList<String> data; 
    ArrayList<String> categoria;
    Context c;
    LayoutInflater inflater;

    public ParsingArrayAdapter(Context context,ArrayList<String> titoli, ArrayList<Bitmap> bitmap, ArrayList<String> data, ArrayList<String> categoria)
    {
        super(context,TITOLO);
        this.c = context;
        this.titoli = titoli;
        this.data = data;
        this.categoria = categoria;
        this.bitmap = bitmap;
        this.inflater = LayoutInflater.from(c);

    }

    @Override
    public int getCount()
    {
        return titoli.size();

    }


    //quando la lista richiede una view
    @SuppressLint("NewApi")
    @Override
    public View getView(int pos,View view,ViewGroup parent)
    {
        CacheRiga cache; 
        if(view==null)
        {

            view = inflater.inflate(LAYOUT, parent,false); 
            cache = new CacheRiga(); //inizializzo la cache
            cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
            cache.dateArticoli = (TextView) view.findViewById(DATA); //collego la data
            cache.categoriatext = (TextView) view.findViewById(CATEGORIA); //collego la data
            cache.immagini = (ImageView) view.findViewById(IMMAGINE);//collego descrizione

            view.setTag(cache);//collego view con cache

        }
        else
        {
            cache = (CacheRiga) view.getTag(); 
        }
        if (this.titoli.size() > 0 && pos < this.titoli.size()){
            cache.titolo.setText(titoli.get(pos)); //imposto il titolo
        }

        if (this.data.size() > 0 && pos < this.data.size()){
            cache.dateArticoli.setText(data.get(pos));       
       }
        cache.categoriatext.setText(categoria.get(pos));    
        cache.immagini.setImageBitmap(bitmap.get(pos));

        if (bitmap!=null){
            Log.d("Bitmap MP.it", "BitmapNOTnull");         
        }else{
            Log.d("Bitmap null MP.it", "Bitmapnull");    
        }

        if (data!=null){
            Log.d("Data", "Data NOT null");         
        }else{
            Log.d("Data", "Data null");    
        }


        return view;
    }

    private class CacheRiga { // classe per la cache delle righe
        public TextView titolo; // cache titolo
        public TextView dateArticoli; // cache data
        public TextView categoriatext; // cache categoria
        public ImageView immagini; // cache descrizione
    }
公共类ParsingArrayAdapter扩展ArrayAdapter{
私有最终静态int-LAYOUT=R.LAYOUT.riga_listview;
私有最终静态int TITOLO=R.id.riga_listview_TITOLO;
私有最终静态int DATA=R.id.riga_listview_DATA;
私有最终静态int CATEGORIA=R.id.riga_listview_CATEGORIA;
私有最终静态int IMMAGINE=R.id.imageView1;
阵列列表位图;
ArrayList链接;
ArrayList titoli;
阵列列表数据;
ArrayList分类;
上下文c;
充气机;
公共ParsingArrayAdapter(上下文上下文、ArrayList标题、ArrayList位图、ArrayList数据、ArrayList分类)
{
超级(上下文,TITOLO);
c=上下文;
this.titoli=titoli;
这个数据=数据;
this.categoria=categoria;
this.bitmap=位图;
此充气器=来自(c)的充气器;
}
@凌驾
public int getCount()
{
返回titoli.size();
}
//丽希德观景酒店
@SuppressLint(“新API”)
@凌驾
公共视图getView(int pos、视图视图、视图组父视图)
{
CacheRiga缓存;
如果(视图==null)
{
视图=充气机。充气(布局、父级、假);
cache=new CacheRiga();//缓存
cache.titolo=(TextView)view.findViewById(titolo);//colego titolo
cache.dateArticoli=(TextView)view.findViewById(数据);//colego la DATA
cache.categatext=(TextView)view.findviewbyd(categia);//collego la data
cache.immagini=(ImageView)view.findviewbyd(IMMAGINE);//collego descripione
view.setTag(缓存);//collego view con缓存
}
其他的
{
cache=(CacheRiga)view.getTag();
}
if(this.titoli.size()>0&&pos0&&pospublic class ParsingArrayAdapter extends ArrayAdapter<String>{

    private final static int LAYOUT = R.layout.riga_listview;
    private final static int TITOLO = R.id.riga_listview_titolo;
    private final static int DATA = R.id.riga_listview_data;
    private final static int CATEGORIA = R.id.riga_listview_categoria;
    private final static int IMMAGINE = R.id.imageView1;
    ArrayList<Bitmap> bitmap;
    ArrayList<String> links;
    ArrayList<String> titoli;
    ArrayList<String> data; 
    ArrayList<String> categoria;
    Context c;
    LayoutInflater inflater;

    public ParsingArrayAdapter(Context context,ArrayList<String> titoli, ArrayList<Bitmap> bitmap, ArrayList<String> data, ArrayList<String> categoria)
    {
        super(context,TITOLO);
        this.c = context;
        this.titoli = titoli;
        this.data = data;
        this.categoria = categoria;
        this.bitmap = bitmap;
        this.inflater = LayoutInflater.from(c);

    }

    @Override
    public int getCount()
    {
        return titoli.size();

    }


    //quando la lista richiede una view
    @SuppressLint("NewApi")
    @Override
    public View getView(int pos,View view,ViewGroup parent)
    {
        CacheRiga cache; 
        if(view==null)
        {

            view = inflater.inflate(LAYOUT, parent,false); 
            cache = new CacheRiga(); //inizializzo la cache
            cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
            cache.dateArticoli = (TextView) view.findViewById(DATA); //collego la data
            cache.categoriatext = (TextView) view.findViewById(CATEGORIA); //collego la data
            cache.immagini = (ImageView) view.findViewById(IMMAGINE);//collego descrizione

            view.setTag(cache);//collego view con cache

        }
        else
        {
            cache = (CacheRiga) view.getTag(); 
        }
        if (this.titoli.size() > 0 && pos < this.titoli.size()){
            cache.titolo.setText(titoli.get(pos)); //imposto il titolo
        }

        if (this.data.size() > 0 && pos < this.data.size()){
            cache.dateArticoli.setText(data.get(pos));       
       }
        cache.categoriatext.setText(categoria.get(pos));    
        cache.immagini.setImageBitmap(bitmap.get(pos));

        if (bitmap!=null){
            Log.d("Bitmap MP.it", "BitmapNOTnull");         
        }else{
            Log.d("Bitmap null MP.it", "Bitmapnull");    
        }

        if (data!=null){
            Log.d("Data", "Data NOT null");         
        }else{
            Log.d("Data", "Data null");    
        }


        return view;
    }

    private class CacheRiga { // classe per la cache delle righe
        public TextView titolo; // cache titolo
        public TextView dateArticoli; // cache data
        public TextView categoriatext; // cache categoria
        public ImageView immagini; // cache descrizione
    }