我正在开发一个 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/