Добавлен пример бесконечного списка для почты
This commit is contained in:
parent
9efd7f8d86
commit
3a419f0c3b
@ -15,6 +15,7 @@ import com.annimon.client.adapters.ActionsAdapter;
|
||||
import com.annimon.client.entities.Action;
|
||||
import com.annimon.client.fragments.DiaryFragment;
|
||||
import com.annimon.client.fragments.ForumFragment;
|
||||
import com.annimon.client.fragments.MailFragment;
|
||||
|
||||
import net.simonvt.menudrawer.MenuDrawer;
|
||||
import net.simonvt.menudrawer.Position;
|
||||
@ -79,6 +80,8 @@ public class MainActivity extends Activity {
|
||||
fragment = new ForumFragment();
|
||||
} else if ("diary".equals(path)) {
|
||||
fragment = new DiaryFragment();
|
||||
} else if ("mail".equals(path)) {
|
||||
fragment = new MailFragment();
|
||||
}
|
||||
|
||||
if (fragment == null) return;
|
||||
|
73
src/com/annimon/client/fragments/MailFragment.java
Normal file
73
src/com/annimon/client/fragments/MailFragment.java
Normal file
@ -0,0 +1,73 @@
|
||||
package com.annimon.client.fragments;
|
||||
|
||||
import android.app.ListFragment;
|
||||
import android.os.Bundle;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class MailFragment extends ListFragment {
|
||||
|
||||
private int itemsPerPage = 10;
|
||||
private boolean loadingMore = false;
|
||||
private ArrayList<String> items;
|
||||
private ArrayAdapter<String> adapter;
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
items = new ArrayList<String>();
|
||||
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
|
||||
|
||||
// FooterView для показа информации о подгрузке данных
|
||||
TextView footerView = new TextView(getActivity());
|
||||
footerView.setText("Loading...");
|
||||
getListView().addFooterView(footerView);
|
||||
|
||||
setListAdapter(adapter);
|
||||
getListView().setOnScrollListener(new AbsListView.OnScrollListener(){
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {}
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisibleItem,
|
||||
int visibleItemCount, int totalItemCount) {
|
||||
int lastInScreen = firstVisibleItem + visibleItemCount;
|
||||
if((lastInScreen == totalItemCount) && !(loadingMore)){
|
||||
Thread thread = new Thread(loadMoreListItems);
|
||||
thread.start();
|
||||
}
|
||||
}
|
||||
});
|
||||
Thread thread = new Thread(loadMoreListItems);
|
||||
thread.start();
|
||||
}
|
||||
|
||||
private Runnable loadMoreListItems = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
loadingMore = true;
|
||||
items = new ArrayList<String>();
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {}
|
||||
for (int i = 0; i < itemsPerPage; i++) {
|
||||
items.add(String.valueOf(System.currentTimeMillis()));
|
||||
}
|
||||
getActivity().runOnUiThread(returnRes);
|
||||
}
|
||||
};
|
||||
|
||||
private Runnable returnRes = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(items != null && items.size() > 0){
|
||||
adapter.addAll(items);
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
loadingMore = false;
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user