package reco.frame.demo.adapter; import java.util.ArrayList; import java.util.List; import reco.frame.demo.R; import reco.frame.demo.entity.AppInfo; import reco.frame.tv.view.TvImageView; import reco.frame.tv.view.TvRelativeLayout; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; public class PageAdapter extends PagerAdapter { private List<List<AppInfo>> pageList; private Context context; private int width, height, space, margin,padding; private LayoutInflater mInflater; private int marginTop; private int column=4; public PageAdapter(Context context,ViewPager vp_container,List<AppInfo> itemList) { this.context = context; this.mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.width = (int) context.getResources().getDimension(R.dimen.px546); this.height = (int) context.getResources().getDimension(R.dimen.px320); this.margin = (int) context.getResources().getDimension(R.dimen.px40); this.space = (int) context.getResources().getDimension(R.dimen.px20); init(vp_container,itemList); } private void init(ViewPager vp_container,List<AppInfo> itemList){ pageList = new ArrayList<List<AppInfo>>(); List<AppInfo> page = new ArrayList<AppInfo>(); for (int i = 0; i < itemList.size(); i++) { AppInfo app = itemList.get(i); page.add(app); if (page.size() >= column * 2) { pageList.add(page); page = new ArrayList<AppInfo>(); } else if (i == (itemList.size() - 1)) { pageList.add(page); break; } } for (int i = 0; i < pageList.size(); i++) { vp_container.addView(createView(pageList.get(i), i + 1)); } } @Override public int getCount() { return pageList.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { View pageView = null; try { pageView = createView(pageList.get(position),position + 1); ((ViewPager) container).addView(pageView); } catch (Exception e) { e.printStackTrace(); } return pageView; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); } private RelativeLayout createView(List<AppInfo> appList,final int pageNum) { ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); final RelativeLayout page = new RelativeLayout(context); page.setPadding(space, space, space, space); page.setLayoutParams(vlp); page.setClipChildren(false); page.setClipToPadding(false); for (int i = 0; i < appList.size(); i++) { final AppInfo app = appList.get(i); final TvRelativeLayout scaleButton=(TvRelativeLayout) mInflater .inflate(R.layout.item_bitmap, null); TvImageView tiv_icon = (TvImageView) scaleButton .findViewById(R.id.tiv_icon); TextView tv_title = (TextView) scaleButton .findViewById(R.id.tv_title); int vId = pageNum * 10 + i; scaleButton.setId(vId); tv_title.setText(app.title); tiv_icon.configImageUrl(app.imageUrl); int size=230; if (i == 0) { RelativeLayout.LayoutParams appLpFirst = new RelativeLayout.LayoutParams( size, size); appLpFirst.addRule(RelativeLayout.ALIGN_PARENT_LEFT); appLpFirst.setMargins(0, 0, 0, 0); page.addView(scaleButton, appLpFirst); } else if (i < column) { RelativeLayout.LayoutParams appLpRight = new RelativeLayout.LayoutParams( size, size); appLpRight.addRule(RelativeLayout.RIGHT_OF, vId - 1); appLpRight.setMargins(space, 0, 0, 0); page.addView(scaleButton, appLpRight); } else if (i == column) { RelativeLayout.LayoutParams appLpRight = new RelativeLayout.LayoutParams( size, size); appLpRight.addRule(RelativeLayout.BELOW, vId - column); appLpRight.addRule(RelativeLayout.ALIGN_PARENT_LEFT); appLpRight.setMargins(0, space, 0, 0); page.addView(scaleButton, appLpRight); } else { RelativeLayout.LayoutParams appLpRight = new RelativeLayout.LayoutParams( size, size); appLpRight.addRule(RelativeLayout.BELOW, vId - column); appLpRight.addRule(RelativeLayout.RIGHT_OF, vId - 1); appLpRight.setMargins(space, space, 0, 0); page.addView(scaleButton, appLpRight); } if (pageNum == 1 && i == 0) { scaleButton.requestFocus(); } } return page; } }