public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private Handler handler = new Handler() { private MyViewPager viewPager; @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: subjects = (List<BeiJingBean.SubjectsBean>) msg.obj; adapter = new MyAdapter(); lv.setAdapter(adapter); viewPager = new MyViewPager(); vp.setAdapter(viewPager); vp.setCurrentItem(10000); initDot(); lv.addHeaderView(vp); break; case 1: String json = (String) msg.obj; //Toast.makeText(MainActivity.this,json,Toast.LENGTH_LONG).show(); adapter.notifyDataSetChanged(); viewPager.notifyDataSetChanged(); lv.stopRefresh(); break; case 2: int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); sendMsg(); break; } } }; private MyAdapter adapter; private DisplayImageOptions options; private SharedPreferences sp; private List<BeiJingBean.SubjectsBean> subjects; private List<BeiJingBean.SubjectsBean.CastsBean> casts; private XListView lv; private int pager = 1; private ViewPager vp; private LinearLayout ll; private List<BeiJingBean.SubjectsBean.CastsBean> viewcasts; private List<ImageView> ivList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (XListView) findViewById(R.id.lv); View view = View.inflate(MainActivity.this, R.layout.pager_item, null); vp = (ViewPager) view.findViewById(R.id.vp); ll = (LinearLayout) view.findViewById(R.id.ll); lv.setPullRefreshEnable(true); lv.setPullLoadEnable(true); lv.setXListViewListener(this); //做轮播 sendMsg();
//进行缓存操作 sp = getSharedPreferences("config", MODE_PRIVATE); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .cacheInMemory(true) .cacheOnDisk(true) .build();
if (sp.getString("json", null) == null) { Toast.makeText(this, "第一次", Toast.LENGTH_SHORT).show(); new Thread() { @Override public void run() { super.run(); String path = "https://api.douban.com/v2/movie/in_theaters?apikey=0b2bdeda43b5688921839c8ecb20399b&city=北京&start=" + pager + "&count=2"; String json = NetWork.getJson(path); sp.edit().putString("json", json).commit(); getGsonData(json); //Toast.makeText(MainActivity.this,json,Toast.LENGTH_LONG).show(); } }.start(); } else { Toast.makeText(this, "第二次有缓存了", Toast.LENGTH_SHORT).show(); String json = sp.getString("json", null); getGsonData(json); } } /** * 刷新操作 */ @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { new Thread() { @Override public void run() { super.run(); pager++; String path = "https://api.douban.com/v2/movie/in_theaters?apikey=0b2bdeda43b5688921839c8ecb20399b&city=北京&start=" + pager + "&count=2"; String json = NetWork.getJson(path); Gson gson = new Gson(); BeiJingBean beiJingBean = gson.fromJson(json, BeiJingBean.class); List<BeiJingBean.SubjectsBean> subjects = beiJingBean.getSubjects(); List<BeiJingBean.SubjectsBean.CastsBean> casts1 = subjects.get(0).getCasts(); casts.addAll(0, casts1); Message message = new Message(); message.what = 1; message.obj = json; handler.sendMessage(message); } }.start(); } }, 2000); } @Override public void onLoadMore() { } /** * 做轮播 */ public void sendMsg() { handler.postDelayed(new Runnable() { @Override public void run() { handler.sendEmptyMessage(2); } }, 2000); } /** * 轮播的小点 */ public void initDot() { ivList = new ArrayList<>(); if (ivList != null) { ivList.clear(); } for (int i = 0; i < viewcasts.size(); i++) { ImageView iv = new ImageView(MainActivity.this); if (i == 0) { iv.setImageResource(R.drawable.dot_select); } else { iv.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(10, 10); layoutParams.setMargins(10, 0, 10, 0); ll.addView(iv, layoutParams); ivList.add(iv); } } /** * MyViewPager适配器 */ class MyViewPager extends PagerAdapter { @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(viewcasts.get(position % viewcasts.size()).getAvatars().getLarge(), imageView, options); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } } /** * MyAdapter适配器 */ class MyAdapter extends BaseAdapter { @Override public int getCount() { return casts.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(MainActivity.this, R.layout.xlist_item, null); holder.iv = (ImageView) convertView.findViewById(R.id.iv); holder.tv = (TextView) convertView.findViewById(R.id.tv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } ImageLoader.getInstance().displayImage(casts.get(position).getAvatars().getLarge(), holder.iv, options); holder.tv.setText(casts.get(position).getName()); return convertView; } class ViewHolder { ImageView iv; TextView tv; } } /** * 解析json * @param json */ private void getGsonData(String json) { Gson gson = new Gson(); BeiJingBean beiJingBean = gson.fromJson(json, BeiJingBean.class); subjects = beiJingBean.getSubjects(); casts = subjects.get(0).getCasts(); viewcasts = subjects.get(1).getCasts(); Message message = new Message(); message.obj = subjects; message.what = 0; handler.sendMessage(message); } }