我正在开发android app
,其中我正在显示一个包含多个项目的ListView
。点击项目我正在传递项目名称和所有项目的ArrayList
。
Intent myIntent = new Intent(context, DetailActivity.class);
myIntent.putExtra("name", name);
myIntent.putStringArrayListExtra("arraylistofitems", arraylistofitems);
context.startActivity(myIntent);
在DetailActivity
中,我想显示列表中点击的项目,on scroll left or right
显示list
中的剩余项目。我正在使用以下代码 -
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
的长度)。
问题 - 我如何实现滚动效果,点击项目被打开,滚动左侧项目应该显示,反之亦然?
答案 0 :(得分:1)
您可以做一件事,传递被点击的项目的位置,并在您获取项目名称和列表数组时获取您的详细活动。然后调用以下行 -
viewPager.setCurrentItem(position);
所以,现在没有必要管理适配器的位置。适配器将照顾它。