Android Listview自动无限轮播滚动

布局:

<ListView
    android:id="@+id/list_item"
    android:layout_width="match_parent"
    android:layout_height="30dp"


    />

适配器布局

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:textColor="@color/back"
    android:layout_gravity="center_vertical"
    android:text="ss"
    android:background="@color/blue"


    />

适配器

public class ListAdapter extends BaseAdapter {
    private Context context;
    private List<String> arr;
    LayoutInflater inflater = null;
    public ListAdapter(Context context,List<String> arr){
        this.context = context;
        //listview中循环显示的数据
       this.arr=arr;
        inflater = LayoutInflater.from(context);
    }
    public ListAdapter(){

    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        //返回int可以保存的最大值,此值为2147483647
//        return Integer.MAX_VALUE;
    return Integer.MAX_VALUE;
    }
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return arr.get(position % arr.size());
    }
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position % arr.size();
    }
    @Override
    public View getView(int position, View view, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder = null;
        if(view == null){
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.item_text, null);
            holder.text = (TextView) view.findViewById(R.id.text);
            view.setTag(holder);
        }else{
            holder = (ViewHolder) view.getTag();
        }
        //strs[position%strs.length]实现listview中数据的循环
        holder.text.setText(arr.get(position % arr.size()));

        return view;
    }

}

class ViewHolder{
    public TextView text;
}

控制循环类

public class TimeTaskScroll extends TimerTask {
    private ListView listView;
    public TimeTaskScroll(Context context, ListView listView) {
        this.listView = listView;
    }
    private Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            //  控制速度
             listView.smoothScrollBy(5, 0);
        }
    };
    @Override
    public void run() {
        Message msg = handler.obtainMessage();
        handler.sendMessage(msg);
    }
}

MainActiviry调用:

List<String> newsList = new ArrayList<>();
for(int i = 0; i < 50; i++) {
    newsList.add(String.valueOf(i));
}
ListView list_item = (ListView) findViewById(R.id.list_item);
ListAdapter adapter=new ListAdapter(MainActivity.this,newsList);
list_item.setAdapter(adapter);
//设定任务
new Timer().schedule(new TimeTaskScroll(this, list_item), 100, 100);

猜你喜欢

转载自blog.csdn.net/Liu_ser/article/details/86093719