我正在使用此库: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
}