private ListView mListView;
private List<String> mList = new ArrayList<>();
private ArrayAdapter<String> adapter;
private boolean isLast = false;
private View footerLayout;
private SwipeRefreshLayout mRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mList.clear();
for (int i = 0; i < 20; i++) {
mList.add("假数据" + i);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
if(mRefreshLayout.isRefreshing()){
mRefreshLayout.setRefreshing(false);
}
}
});
}
}).start();
}
private void loadMore() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 20; i++) {
mList.add("加载更多假数据" + i);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
if (null != footerLayout)
mListView.removeFooterView(footerLayout);
adapter.notifyDataSetChanged();
}
});
}
}).start();
}
private void initView() {
mListView = (ListView) findViewById(R.id.mListView);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mList);
mListView.setAdapter(adapter);
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
if (i == SCROLL_STATE_IDLE && isLast) {
if (mListView.getFooterViewsCount() >= 1) {
return;
}
footerLayout = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_footer, null);
mListView.addFooterView(footerLayout);
footerLayout.findViewById(R.id.mLoadMore).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadMore();
}
});
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {
//i 当前屏幕显示的第一条item的position i1:屏幕中显示的多少条 i2:总条数
isLast = i + i1 == i2;
}
});
mRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.mRefreshLayout);
mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
initData();
}
});
}
private List<String> mList = new ArrayList<>();
private ArrayAdapter<String> adapter;
private boolean isLast = false;
private View footerLayout;
private SwipeRefreshLayout mRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mList.clear();
for (int i = 0; i < 20; i++) {
mList.add("假数据" + i);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
if(mRefreshLayout.isRefreshing()){
mRefreshLayout.setRefreshing(false);
}
}
});
}
}).start();
}
private void loadMore() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 20; i++) {
mList.add("加载更多假数据" + i);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
if (null != footerLayout)
mListView.removeFooterView(footerLayout);
adapter.notifyDataSetChanged();
}
});
}
}).start();
}
private void initView() {
mListView = (ListView) findViewById(R.id.mListView);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mList);
mListView.setAdapter(adapter);
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
if (i == SCROLL_STATE_IDLE && isLast) {
if (mListView.getFooterViewsCount() >= 1) {
return;
}
footerLayout = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_footer, null);
mListView.addFooterView(footerLayout);
footerLayout.findViewById(R.id.mLoadMore).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadMore();
}
});
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {
//i 当前屏幕显示的第一条item的position i1:屏幕中显示的多少条 i2:总条数
isLast = i + i1 == i2;
}
});
mRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.mRefreshLayout);
mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
initData();
}
});
}