Android-如何管理viewpager在适配器中的位置?
我正在开发一个Android-如何管理viewpager在适配器中的位置?,android,android-viewpager,Android,Android Viewpager,我正在开发一个android应用程序,其中我显示了一个列表视图,其中包含许多项目。单击项目时,我将传递所有项目的项目名称和ArrayList Intent myIntent = new Intent(context, DetailActivity.class); myIntent.putExtra("name", name); myIntent.putStringArrayListExtra("arraylistofitems", arraylis
android应用程序
,其中我显示了一个列表视图
,其中包含许多项目。单击项目时,我将传递所有项目的项目名称和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);
}
public ViewPagerAdapter(上下文,数组列表数据){
this.context=上下文;
这个。数据=数据;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图==((MyLayout)对象);
}
@凌驾
公共对象实例化项(视图组容器,int位置){
//项目视图声明
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
查看项目视图=充气机。充气(R.layout.viewpager\u项目id,容器,
假);
//布局项初始化
((ViewPager)容器).addView(itemView);
ParseQuery=ParseQuery.getQuery(“myclass”);
query.whereEqualTo(“colName”,data.get(position));
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列表项列表,解析异常arg1){
对于(int i=0;i
但所有数据都是从开始显示的(第0个位置到arraylist
的长度)
问题-如何在打开单击的项目时实现滚动效果,并在滚动时显示左侧项目,反之亦然?您可以做一件事,传递正在单击的项目的位置,并在您的详细活动中获取它,就像获取项目名称和列表数组一样。然后打下面的电话-
viewPager.setCurrentItem(position);
所以,现在不需要管理适配器上的位置。适配器会处理好的