使用load将数据添加到listview更多滚动

时间:2014-06-19 15:03:45

标签: java android listview android-listview scroll

我正在使用此库:https://github.com/shontauro/android-pulltorefresh-and-loadmore在滚动到达结尾时在我的lisview中添加项目。实际上它有效。它加载新数据,但它不会“附加”到列表视图。它只是重新加载一个新列表。我需要在旧库中添加我的新数据!这是我到目前为止所做的: 我宣布了这些:

String[] provaArr;
    private LinkedList<String> mList;

然后:

mList = new LinkedList<String>();
        provaArr = (titoli.toArray(new String[0]));
        mList.addAll(Arrays.asList(provaArr));

    lista = (LoadMoreListView)view.findViewById(R.id.main_lista);
            lista.setOnLoadMoreListener(new OnLoadMoreListener() {
                public void onLoadMore() {
                    new ParsingSecondPage().execute();

                }
            });

AsynkTask:

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();

        }

    }

所以,当我到达页面末尾时,它会调用AsynkTask,而是添加项目,然后使用新数据重新加载页面。

ADAPTER:

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
    }

0 个答案:

没有答案