最近新的需求刚做完, 今天闲来无事, 利用下午的空闲时间 写了一个listView的分页加载demo,点击上一页和下一页的时候我加载出相应的数据, 以下是贴出的代码, 如果不足之处,希望大神指出,共同进步!!!!
public class MainActivity extends Activity implements OnClickListener {
private ListView mListView;
private Button btn_prev;
private TextView tv_current;
private Button btn_next;
private String[] str ={"中国","美国","加拿大","小日本","棒子","朝鲜三胖","俄罗斯","米兰","刚果","巴西","印度阿三","英国","法国","意大利","葡萄牙","牙买加"
,"拉斯维加斯","香港","台湾"};
private int VIEW_COUNT = 5; //每页显示条目数
private int index = 0; //当前页数索引
private List<Map<String,String>> listItem;
private MyAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
initDate();
btn_prev.setOnClickListener(this);
btn_next.setOnClickListener(this);
}
private void initView() {
mListView = (ListView) findViewById(R.id.listview);
btn_prev = (Button) findViewById(R.id.btn_prev);
tv_current = (TextView) findViewById(R.id.tv_current);
btn_next = (Button) findViewById(R.id.btn_next);
}
private void initDate() {
listItem = getDate();
mAdapter = new MyAdapter(this);
mListView.setAdapter(mAdapter);
}
private List<Map<String, String>> getDate() {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String,String> map;
for(int i =0; i<19;i++){
map = new HashMap<String,String>();
map.put("country","国家---"+str[i]);
list.add(map);
}
return list;
}
class MyAdapter extends BaseAdapter{
private Activity a;
public MyAdapter(Activity a){
this.a = a;
}
@Override
public int getCount() {
//表示前几页的总数 total
int total = VIEW_COUNT*index;
if(listItem.size() - total <VIEW_COUNT){
return listItem.size()-total;
}else{
return VIEW_COUNT;
}
}
@Override
public Object getItem(int position) {
return listItem.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(null != convertView){
holder = (ViewHolder) convertView.getTag();
}else{
convertView = View.inflate(MainActivity.this, R.layout.item, null);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.tv_item);
convertView.setTag(holder);
}
holder.textView.setText(listItem.get(position+VIEW_COUNT*index).get("country"));
return convertView;
}
class ViewHolder{
public TextView textView;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_prev:
if(index ==0){
}else{
index--;
mAdapter.notifyDataSetChanged();
tv_current.setText(index+1+"");
checkButtonEnable();
}
break;
case R.id.btn_next:
index++;
mAdapter.notifyDataSetChanged();
tv_current.setText(index+1+"");
checkButtonEnable();
break;
default:
break;
}
}
/**
* 检查 按钮是否能用
*/
private void checkButtonEnable() {
if(index <= 0){
btn_prev.setEnabled(false);
}else{
btn_prev.setEnabled(true);
}
if(listItem.size() - VIEW_COUNT*index <=VIEW_COUNT){
btn_next.setEnabled(false);
}else{
btn_next.setEnabled(true);
}
}
}