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);

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Android ListView 改为横向滚动,你可以使用 HorizontalScrollView 和 LinearLayout 来实现。以下是实现的步骤: 1. 在 XML 布局文件中,将 ListView 包裹在一个 HorizontalScrollView 中,并设置 HorizontalScrollView 的宽度为 wrap_content。 2. 将 ListView 的布局方向设置为水平方向,即 android:orientation="horizontal"。 3. 在代码中,为 ListView 设置一个适配器,用于填充数据。 4. 最后,在适配器中设置每个列表项的宽度为固定值,这样它们将在水平方向上排列。 以下是一个示例代码: XML 布局文件(例如 activity_main.xml): ```xml <HorizontalScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> </HorizontalScrollView> ``` Java 代码(例如 MainActivity.java): ```java public class MainActivity extends AppCompatActivity { private ListView listView; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listView); // 创建适配器并设置数据 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); adapter.add("Item 1"); adapter.add("Item 2"); adapter.add("Item 3"); adapter.add("Item 4"); adapter.add("Item 5"); // 设置适配器 listView.setAdapter(adapter); // 设置每个列表项的宽度 listView.post(new Runnable() { @Override public void run() { for (int i = 0; i < listView.getChildCount(); i++) { View listItem = listView.getChildAt(i); listItem.setMinimumWidth(300); // 设置宽度为固定值 } } }); } } ``` 这样,你的 Android ListView 将会以横向滚动的方式显示列表项。记得替换示例代码中的布局和适配器,以适应你自己的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值