布局:
<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);