listView自动滑动功能

来源:互联网 发布:守望先锋max录入数据 编辑:程序博客网 时间:2024/05/18 00:34

这里写图片描述

主要功能代码

package com.example.administrator.mytest;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class Main2Activity extends AppCompatActivity {    private ListView listView;    private String[] a={"1","2","3","4","5","6","7","8","9"};    private ArrayList<String> mData;    public int index=-1;    private TimerTask timerTask=new TimerTask() {        @Override        public void run() {            Message msg=new Message();            msg.what=1;            handler.sendMessage(msg);        }    };    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.what){                case 1:                    listViewScroll();                    break;            }        }    };    private View listViewItem;    private void listViewScroll() {        listView.smoothScrollToPositionFromTop(index,-(listViewItem.getMeasuredHeight()+listView.getDividerHeight()),1000);        index+=1;        if (index>=listView.getCount()){            Log.e("Main2Activity","listView.getCount():"+listView.getCount());            index=0;        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        listView = (ListView)findViewById(R.id.lv);        listView.setDividerHeight(0);        listView.setDivider(null);        mData = new ArrayList<String>(Arrays.asList(a));        MyAdapter adapter = new MyAdapter();        measureItem(adapter);    }    private void measureItem(MyAdapter adapter) {        listView.setAdapter(adapter);        listViewItem = adapter.getView(0, null, listView);        listViewItem.measure(0,0);        Log.e("Main2Activity","listViewItem :"+listViewItem.getMeasuredHeight());        int totalHei = (listViewItem.getMeasuredHeight()+listView.getDividerHeight() ) * 4;        listView.getLayoutParams().height=totalHei;        new Timer().schedule(timerTask,new Date(),2000);    }    private class MyAdapter extends BaseAdapter{        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public int getItemViewType(int position) {        if (position%2==0){            return 0;        }else{            return 1;        }        }        @Override        public int getViewTypeCount() {            return super.getViewTypeCount()+1;        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder;            if (null==convertView){                convertView=View.inflate(Main2Activity.this,R.layout.activity_main2_item,null);                holder=new ViewHolder();                holder.item=(TextView)convertView.findViewById(R.id.lv_item);                holder.llItem=(LinearLayout)convertView.findViewById(R.id.ll_item);                convertView.setTag(holder);            }else{                holder = (ViewHolder) convertView.getTag();            }            //不同条目设置背景色            holder.llItem.setBackgroundResource(getItemViewType(position)==0?R.color.transparent:R.color.view_gray);            holder.item.setText(mData.get(position%mData.size()));            return convertView;        }    }    static class ViewHolder{        TextView item;        LinearLayout llItem;    }    @Override    protected void onDestroy() {        timerTask.cancel();        handler.removeCallbacksAndMessages(null);        super.onDestroy();    }}
0 0
原创粉丝点击