android 上拉加载数据下拉更新数据操作

android 上拉加载数据下拉更新数据操作

先上图:

主要代码 

MainActivity 
package com.listviewaddheader.ui;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Toast;

import com.example.listviewaddheader.R;
import com.listviewaddheader.adapter.ListViewAdapter;
import com.listviewaddheader.adapter.TopViewPagerAdapter;
import com.listviewaddheader.model.Information;
import com.listviewaddheader.view.XListView;
import com.listviewaddheader.view.XListView.IXListViewListener;

public class MainActivity extends Activity implements OnItemClickListener,
        OnPageChangeListener, IXListViewListener {

    private Context mContext = this;
    private XListView mListView;

    private LayoutInflater mInflater;
    private View mHeaderView;
    private ListViewAdapter mAdapter;
    private List<Information> mInformationList;
    private List<String> mImageList;
    private ViewPager mTopViewPager;
    private TopViewPagerAdapter mTopViewPagerAdapter;

    private Handler mHandler;
    private int start = 0;
    private static int refreshCnt = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getData();
        getView();
        setListener();
    }

    private void getView() {
        if (mInflater == null) {
            mInflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
        mListView = (XListView) this.findViewById(R.id.lv);
        mListView.setPullLoadEnable(true);
        mHeaderView = mInflater.inflate(R.layout.viewpager_main, null);
        mTopViewPagerAdapter = new TopViewPagerAdapter(mContext, mImageList);
        mTopViewPager = (ViewPager) mHeaderView.findViewById(R.id.viewpager);
        mTopViewPager.setAdapter(mTopViewPagerAdapter);
        mListView.addHeaderView(mHeaderView);
        mAdapter = new ListViewAdapter(mContext, mInformationList);
        mListView.setAdapter(mAdapter);
        mListView.setXListViewListener(this);
        mHandler = new Handler();
    }

    private void setListener() {
        // TODO Auto-generated method stub
        mListView.setOnItemClickListener(this);
        mTopViewPager.setOnPageChangeListener(this);
    }

    public void getData() {
        mInformationList = new ArrayList<Information>();
        for (int i = 0; i < 10; i++) {
            Information information = new Information();
            information.setDesc("第" + i + "s条描述");
            information.setTitle("第" + i + "s条标题");
            information.setPd("这是商品介绍"+i);
            mInformationList.add(information);
        }
        mImageList = new ArrayList<String>();
        mImageList
                .add("http://img2.imgtn.bdimg.com/it/u=3675742480,2498904140&fm=21&gp=0.jpg");
        mImageList
                .add("http://img1.imgtn.bdimg.com/it/u=2705048742,611875765&fm=21&gp=0.jpg");
        mImageList
                .add("http://img0.imgtn.bdimg.com/it/u=1663788412,3440955990&fm=21&gp=0.jpg");
        mImageList
                .add("http://img2.imgtn.bdimg.com/it/u=1664194419,2178175637&fm=21&gp=0.jpg");
        mImageList
                .add("http://img1.imgtn.bdimg.com/it/u=1611159065,380062274&fm=21&gp=0.jpg");

    }

    public void getData2() {
        //mInformationList = new ArrayList<Information>();
        for (int i = 0; i < 10; i++) {
            Information information = new Information();
            information.setDesc("第" + i + i + "条描述");
            information.setTitle("第" + i + i + "条标题");
            information.setPd("这是商品介绍"+i);
            mInformationList.add(information);
        }
//        mImageList = new ArrayList<String>();
//        mImageList
//                .add("http://ys.rili.com.cn/images/image/201401/01111959pp.jpg");
//        mImageList
//                .add("http://ys.rili.com.cn/images/image/201401/0111174780.jpg");
//        mImageList
//                .add("http://ys.rili.com.cn/images/image/201401/011121360w.jpg");
//        mImageList
//                .add("http://ys.rili.com.cn/images/image/201401/01112258p9.jpg");
//        mImageList
//                .add("http://ys.rili.com.cn/images/image/201401/01112527zp.jpg");

    }

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        // TODO Auto-generated method stub
        dosomething(parent.getAdapter().getItem(position));
    }

    private void dosomething(Object item) {
        // TODO Auto-generated method stub
        Toast.makeText(mContext, ((Information) item).getTitle(), 1000).show();
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int arg0) {
        // TODO Auto-generated method stub

    }

    private void onLoad() {
        mListView.stopRefresh();
        mListView.stopLoadMore();
        mListView.setRefreshTime("刚刚");
    }

    @Override
    public void onRefresh() {
        // TODO Auto-generated method stub
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                start = ++refreshCnt;
                //System.out.println("清除数据:"+start);
                mInformationList.clear();
                getData();
                //getView();
                //mAdapter.notifyDataSetChanged();
                mAdapter = new ListViewAdapter(mContext, mInformationList);
                mListView.setAdapter(mAdapter);
                onLoad();
            }
        }, 2000);
    }

    @Override
    public void onLoadMore() {
        // TODO Auto-generated method stub
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                getData2();
                mAdapter.notifyDataSetChanged();
                onLoad();
            }
        }, 2000);
    }

}
getData()是自己添加数据
getData()2是加载更新用到的数据,可访问数据库获取。
onRefresh是刷新数据
onLoadMore加载更多数据


list_item.xml加载数据的item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="5dip"
    tools:context=".MainActivity" >

    

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/viewlist"
        android:layout_centerVertical="true"
        android:layout_marginRight="22dp"
        android:orientation="vertical" >
        
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="74dp"
            android:layout_height="74dp"
            android:layout_alignLeft="@+id/tv_title"
            android:layout_below="@+id/tv_title"
            android:src="@drawable/loading" />
    </LinearLayout>

<RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/viewlist"
        android:layout_centerVertical="true"
        android:layout_marginRight="22dp"
        android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="5dip"
        android:text="测试标题" />

    <TextView
        android:id="@+id/tv_desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tv_title"
        android:layout_marginTop="5dip"
        android:text="测试内容" />

    <TextView
        android:id="@+id/tv_dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_desc"
        android:layout_marginTop="5dp"
        android:layout_centerHorizontal="true"
        android:text="测试其他数据" />

</RelativeLayout >

</LinearLayout>
 ListViewAdapter.java自定义控件数据处理
package com.listviewaddheader.adapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.listviewaddheader.R;
import com.listviewaddheader.model.Information;

public class ListViewAdapter extends BaseAdapter {

    private Context mContext = null;
    private List<Information> mInformationList;
    private LayoutInflater mLayoutInflater;

    public ListViewAdapter(Context context, List<Information> informationList) {
        mContext = context;
        mInformationList = informationList;
        if (mLayoutInflater == null) {
            mLayoutInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mInformationList != null ? mInformationList.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return mInformationList != null ? mInformationList.get(position) : null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ListViewHolder viewHolder = null;
        if (convertView == null) {
            convertView = mLayoutInflater.inflate(R.layout.list_item, null);
            viewHolder = getListViewHolder(convertView);
            convertView.setTag(viewHolder);
        } else {
            // 取得缓存数据
            viewHolder = (ListViewHolder) convertView.getTag();
        }

        setContentView(viewHolder, position);

        return convertView;
    }

    private void setContentView(ListViewHolder viewHolder, int position) {
        // TODO Auto-generated method stub
        Information information = null;
        if (mInformationList != null && mInformationList.size() > 0) {
            information = mInformationList.get(position);
            viewHolder.mTitleTextView.setText(information.getTitle());
            viewHolder.mDescTextView.setText(information.getDesc());
            viewHolder.mPdTextView.setText(information.getPd());
        }
    }

    private ListViewHolder getListViewHolder(View convertView) {
        ListViewHolder holder = new ListViewHolder();
        holder.mTitleTextView = (TextView) convertView
                .findViewById(R.id.tv_title);
        holder.mDescTextView = (TextView) convertView
                .findViewById(R.id.tv_desc);
        holder.mPdTextView = (TextView) convertView
                .findViewById(R.id.tv_dp);
        return holder;
    }

    public class ListViewHolder {
        public TextView mTitleTextView;
        public TextView mDescTextView;
        public TextView mPdTextView;
    }

}

 

 

源码可以在这里下载,虽然有点小贵主要是我没积分了是在不好意思,但是这绝对物超所值

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terenceno

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值