一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android编程实现ListView滚动提示等待框功能示例

时间:2017-04-03 编辑:简简单单 来源:一聚教程网

其实原理很简单,只需要设置监听listview的滚动事件即可

file1:

 

 代码如下 复制代码

packagecn.stay.activity;

importjava.util.ArrayList;

importjava.util.List;

importcom.aoran.R;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.AbsListView;

importandroid.widget.AbsListView.OnScrollListener;

importandroid.widget.LinearLayout;

importandroid.widget.ListView;

importandroid.widget.ProgressBar;

/**

 * @author riddlezhang

 * 滚动listview提示等待框

 */

publicclassListView_sepextendsActivityimplementsOnScrollListener {

  privateList list =newArrayList();

  privateListView listv01;

  privateMyAdapter adapter;

  privateintcurrent_page =2;

  ProgressBar progressBar;

  privateLinearLayout bottom_linear;

  privateintlastItem;

  @Override

  protectedvoidonCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    listv01 = (ListView) findViewById(R.id.listv01);

    bottom_linear=(LinearLayout) findViewById(R.id.bottom_linear);

    for(inti =0; i <100; i++) {

      list.add("i="+i);

    }

    adapter =newMyAdapter(ListView_sep.this, list);

    listv01.setAdapter(adapter);

//   listv01.setSelection(getSingerStrs().size()-1); 设置每次最后一行被选中

    listv01.setOnScrollListener(this);

  }

  @Override

  publicvoidonScrollStateChanged(AbsListView view,intscrollState) {

    if(lastItem==adapter.count && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {

      if((list.size() - current_page *10) >0) {

        bottom_linear.setVisibility(View.VISIBLE);

        if((list.size() - current_page *10) >=10) {

          adapter.count +=10;

        }else{

          adapter.count += (list.size() - current_page *10);

        }

        current_page++;

        adapter.notifyDataSetChanged();

//       bottom_linear.setVisibility(View.GONE);

      }

    }

  }

  @Override

  publicvoidonScroll(AbsListView view,intfirstVisibleItem,

      intvisibleItemCount,inttotalItemCount) {

      lastItem=firstVisibleItem+visibleItemCount;

  }

}

 

file2:

 

 代码如下 复制代码

packagecn.stay.activity;

importjava.util.List;

importcom.aoran.R;

importandroid.content.Context;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.BaseAdapter;

importandroid.widget.TextView;

publicclassMyAdapterextendsBaseAdapter{

  privateContext mContext;

  privateList list;

  publicintcount=20;

  privateViewHolder holder;

  publicMyAdapter(Context mContext,List list) {

    this.mContext=mContext;

    this.list=list;

  }

  @Override

  publicintgetCount() {

    returncount;

  }

  @Override

  publicObject getItem(intposition) {

    // TODO Auto-generated method stub

    returnlist.get(position);

  }

  @Override

  publiclonggetItemId(intposition) {

    returnposition;

  }

  @Override

  publicView getView(intposition, View convertView, ViewGroup parent) {

    // TODO Auto-generated method stub

    if(convertView==null|| convertView.getTag()==null){

      convertView=LayoutInflater.from(mContext).inflate(R.layout.adapter,null);

      holder =newViewHolder();

      holder.adapter_tv=(TextView) convertView.findViewById(R.id.adapter_tv);

      convertView.setTag(holder);

      }else{

        holder=(ViewHolder) convertView.getTag();

      }

    holder.adapter_tv.setText(list.get(position));

    returnconvertView;

  }

  privateclassViewHolder{

    privateTextView adapter_tv;

  }

}

 

file3:

main.xml

 

 代码如下 复制代码

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:background="@drawable/project_main_bg"

  >

  

    

    

  

  

 

热门栏目