首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌套Android ViewPager,在ListView中水平滑动ListItems

嵌套Android ViewPager的ListView水平滑动ListItems

在Android应用中,使用ViewPager和ListView可以实现水平滑动的ListItems。以下是关于如何嵌套ViewPager和ListView的代码示例:

1. 创建一个布局文件

res/layout/目录下创建一个名为horizontal_viewpager_listview.xml的文件,内容如下:

代码语言:xml
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <!-- ViewPager -->
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"/>

    <!-- ListView -->
    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"/>

</LinearLayout>

2. 创建一个Adapter

创建一个名为HorizontalPagerAdapter.java的Java文件,内容如下:

代码语言:java
复制
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;

public class HorizontalPagerAdapter extends androidx.viewpager.widget.ViewPagerAdapter {
    private List<String> items;

    public HorizontalPagerAdapter(List<String> items) {
        this.items = items;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(container.getContext())
                .inflate(R.layout.horizontal_viewpager_listview, container, false);

        // Set the view pager as the content of the container
        container.addView(view);

        // Set the content of the view pager
        ViewPager viewPager = view.findViewById(R.id.viewPager);
        viewPager.setAdapter(new HorizontalPagerAdapter(items.get(position)));

        // Set the list view as the content of the view pager
        ListView listView = view.findViewById(R.id.listview);
        listView.setAdapter(new ListAdapter(items.get(position)));

        return view;
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }
}

3. 创建一个ListAdapter

创建一个名为ListAdapter.java的Java文件,内容如下:

代码语言:java
复制
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ListAdapter extends ArrayAdapter<String> {
    public ListAdapter(String[] items) {
        super(items);
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item, parent, false);
        }

        String item = getItem(position);

        // Set the text view as the content of the list item
        TextView textView = convertView.findViewById(R.id.textView);
        textView.setText(item);

        return convertView;
    }
}

4. 创建一个布局文件

res/layout/目录下创建一个名为list_item.xml的文件,内容如下:

代码语言:xml
复制

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

代码语言:txt
复制
android:id="@+id/textView"
代码语言:txt
复制
android:layout_width="match_parent"
代码语言:txt
复制
android:layout_height="wrap_content"
代码语言:txt
复制
android:textSize="16sp"
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券