I have successfully integrated a pulltorefresh listview to my actual code.
However, when the list get updated it adds all the rows that exist to the end of the list. I come to the idea to clear all the list element before making the updates but i am stick on
how to remove these rows inside the listview. The row item are cacheable element i think something like clear cache can work ? Any idea please. I want to get rid of the listview rows.
<com.dmobile.pulltorefresh.PullRefreshContainerView
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="2dp"
android:scrollingCache="false"
android:listSelector="@drawable/list_selector"
/>
Here’s my efficient adapter
EfficientAdapter efficienadapter=new EfficientAdapter(Actualites.this,result);
//EfficientAdapter.isActusAstuce=true;
mList.setAdapter(efficienadapter);
this is my oncreate method
mRefreshHeader = new TextView(this);
mImage= new ImageView(this);
mRefreshHeader.setTextSize(TypedValue.COMPLEX_UNIT_SP,16);
mRefreshHeader.setTypeface(null, Typeface.BOLD);
mRefreshHeader.setTextColor(getResources().getColor(R.color.blue));
mRefreshHeader.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mRefreshHeader.setGravity(Gravity.CENTER);
mRefreshHeader.setText("Pull to refresh...");
mImage.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
// LinearLayout.LayoutParams params=new LinearLayout.LayoutParams
// ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT);
// params.leftMargin=50;
// mImage.setLayoutParams(params);
int id = getResources().getIdentifier("boutton_retour", "drawable", getPackageName());
//mImage.setImageResource(id);
mContainerView = (PullRefreshContainerView) findViewById(R.id.container);
mContainerView.setRefreshHeader(mRefreshHeader);
mContainerView.setRefreshHeader(mImage);
mContainerView.setOnChangeStateListener(new OnChangeStateListener() {
@Override
public void onChangeState(PullRefreshContainerView container, int
state) {
switch(state) {
case PullRefreshContainerView.STATE_IDLE:
case PullRefreshContainerView.STATE_PULL:
mRefreshHeader.setText("Tirez pour actualiser...");
break;
case PullRefreshContainerView.STATE_RELEASE:
mRefreshHeader.setText("Relâchez pour rafraîchir...");
break;
case PullRefreshContainerView.STATE_LOADING:
mRefreshHeader.setText("Chargement en cours...");
new Thread(new Runnable() {
@Override
public void run() {
Actualites.this.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch
(InterruptedException e) {
e.printStackTrace();
}
//refresh ui
new loadingTask().execute("");
mContainerView.completeRefresh();
}
});
}
}).start();
break;
}
}
});
mList = mContainerView.getList();
mList.setCacheColorHint(Color.TRANSPARENT);
// PostList for ListView
/// START AsyncTask here
new loadingTask().execute("");
note new loadingTask().execute("") is an async background task
firstly, clear the result array/ arrayList or list, …
after that, notify the adapter to sync list item
hope this help