Android - 如何管理 viewpager 在适配器中的位置?

标签 android android-viewpager

我正在开发一个 android 应用程序,我在其中显示一个包含多个项目的 ListView。单击某个项目时,我将传递所有项目的项目名称和 ArrayList

Intent myIntent = new Intent(context, DetailActivity.class);
            myIntent.putExtra("name", name);
            myIntent.putStringArrayListExtra("arraylistofitems", arraylistofitems);
            context.startActivity(myIntent);

DetailActivity 中,我想显示列表中单击的项目,向左或向右滚动时显示 列表 中的剩余项目。我正在使用以下代码 -

Intent mIntent = getIntent();
    name = mIntent.getStringExtra("name");
    names = mIntent.getStringArrayListExtra("arraylistofitems");
    viewPager = (ViewPager) findViewById(R.id.idofviewpager);
    adapter = new ViewPagerAdapter(context, arraylistofitems);
    viewPager.setAdapter(adapter);

ViewPagerAdapter 如下所示 -

public ViewPagerAdapter(Context context,ArrayList<String> data) {
    this.context = context;
    this.data=data;
}

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

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

@Override
public Object instantiateItem(ViewGroup container, int position) {

    // item views declaration

    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = inflater.inflate(R.layout.viewpager_item_id, container,
            false);

    //layout item initialization

    ((ViewPager) container).addView(itemView);

    ParseQuery<ParseObject> query = ParseQuery.getQuery("myclass");
    query.whereEqualTo("colName", data.get(position));
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> itemList, ParseException arg1) {
            for (int i = 0; i < itemList.size(); i++) {
                ParseObject po = itemList.get(i);

                //set the values from parse into views
            }
        }
    });


    return itemView;

}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    ((ViewPager) container).removeView((MyLayout) object);

}

但是所有数据都从开始显示(第 0 个位置到 arraylist 的长度)。

问题 - 我如何在打开点击项目时实现滚动效果,并且在向左滚动时应显示左侧项目,反之亦然?

最佳答案

你可以做一件事,传递被点击的项目的位置,并在你的细节 Activity 中获取它,就像你获取项目名称和列表数组一样。然后调用以下行 -

    viewPager.setCurrentItem(position);

因此,现在无需管理适配器上的位置。适配器会处理它。

关于Android - 如何管理 viewpager 在适配器中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31783652/

相关文章:

java - 从另一个扩展类中的 MainActivity 访问 var

java - Google Play 游戏服务 BaseGameUtils 中没有 getApiClient()

php - Android:在 mysql 表中注册时插入空值

安卓 : ViewFlipper Or ViewPager - Which is the better option?

android - 在 viewpager 示例中停止预加载页面

android - 无法在 onActivityResult() 中获取数据

c# - Unity 游戏不适合 Android 屏幕

android - FragmentTabPager 根本不工作

android - 动态改变ViewpagerIndicator Fragment Content Android

java - 来自资源的大图像获取异常