Tablayout与Viewpager里添加Xlistview实现上拉下拉

xiaoxiao2021-02-28  102

主界面 public class MainActivity extends AppCompatActivity { private TabLayout tablayout; private ViewPager viewpager; private ImageView im; private ImageOptions imageOptions; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tablayout = (TabLayout) findViewById(R.id.tab); viewpager = (ViewPager) findViewById(R.id.viewpager); viewpager.setAdapter(new adapter(getSupportFragmentManager())); tablayout.setupWithViewPager(viewpager); viewpager.setOffscreenPageLimit(9); imageOptions = new ImageOptions.Builder() .setFailureDrawableId(R.mipmap.ic_launcher) .setUseMemCache(true) .setCircular(true)//设置圆形 .build(); im = (ImageView) findViewById(R.id.vvv); im.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { UMShareAPI.get(MainActivity.this).getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, umAuthListener); } }); } private UMAuthListener umAuthListener = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { //授权开始的回调 } @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show(); String p = data.get("iconurl"); x.image().bind(im,p,imageOptions); } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show(); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } } MAPP类 public class MyApp extends Application { private static MyApp mAppApplication; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); initImageLoader(getApplicationContext()); mAppApplication = this; UMShareAPI.get(this); x.Ext.init(this); } { PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); } /** * 获取Application */ public static MyApp getApp() { return mAppApplication; } /** 初始化ImageLoader */ /** * 初始化ImageLoader */ public static void initImageLoader(Context context) { File cacheDir = StorageUtils.getOwnCacheDirectory(context, "topnews/Cache");//获取到缓存的目录地址 Log.d("cacheDir", cacheDir.getPath()); //创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .threadPoolSize(3)//线程池内加载的数量 .denyCacheImageMultipleSizesInMemory()//.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .diskCacheSize(50 * 1024 * 1024) .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .diskCache(new UnlimitedDiskCache(cacheDir)) //自定义缓存路径//.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间 .build(); ImageLoader.getInstance().init(config);//全局初始化此配置 } }  适配器public class adapter extends FragmentPagerAdapter { private String[] titles={"推荐","北京","视频","社会","微博","生活","军事","教育","应用"}; public adapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Myfragment myfragment=new Myfragment(); return myfragment; } @Override public int getCount() { return titles!=null?titles.length:0; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } } Fragment类 public class Myfragment extends Fragment { private XListView xlistview; private View inflate; private boolean flag=false; private xlvadapter pter; private int index=1; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); View view = getView(); xlistview = (XListView) view.findViewById(R.id.xlv); Testpost(); xlistview.setPullLoadEnable(true); xlistview.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { index++; Testpost(); flag=true; xlistview.stopRefresh(true); } @Override public void onLoadMore() { index++; Testpost(); flag=false; xlistview.stopLoadMore(); } }); } Xutils方法 private void Testpost(){ String uri="http://apis.juhe.cn/cook/query.php"; RequestParams params=new RequestParams(uri); params.addBodyParameter("key","35f9f65629365ddde8321dce7aaa198f"); params.addBodyParameter("menu","秘制红烧肉"); params.addBodyParameter("pn",index+""); params.addBodyParameter("rn","10"); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Gson gson=new Gson(); MenuInfo menuInfo = gson.fromJson(result, MenuInfo.class); List<MenuInfo.ResultBean.DataBean> list = menuInfo.getResult().getData(); if (pter==null){ pter = new xlvadapter(list); xlistview.setAdapter(pter); }else { pter.moreloader(list,flag); pter.notifyDataSetChanged(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } class xlvadapter extends BaseAdapter{ ImageOptions options=new ImageOptions.Builder() .setSize(200,200) .setUseMemCache(true) .setFailureDrawableId(R.mipmap.ic_launcher) .build(); List<MenuInfo.ResultBean.DataBean> list; public xlvadapter(List<MenuInfo.ResultBean.DataBean> list) { this.list = list; } private void moreloader(List<MenuInfo.ResultBean.DataBean> lists,boolean flag){ for (MenuInfo.ResultBean.DataBean bean :lists ) { if (flag){ list.add(0,bean); }else { list.add(bean); } } } @Override public int getCount() { return list!=null?list.size():0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { if (position%2==0){ return 0; }else { return 1; } } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); viewholder1 vh1=null; viewholder2 vh2=null; switch (type){ case 0: if (convertView==null){ vh1=new viewholder1(); convertView=convertView.inflate(getActivity(),R.layout.item1,null); vh1.im1 = (ImageView) convertView.findViewById(R.id.tu1); vh1.tv1= (TextView) convertView.findViewById(R.id.zi1); convertView.setTag(vh1); }else { vh1= (viewholder1) convertView.getTag(); } vh1.tv1.setText(list.get(position).getTags()); x.image().bind(vh1.im1,list.get(position).getAlbums().get(0),options); break; case 1: if (convertView==null){ vh2=new viewholder2(); convertView=convertView.inflate(getActivity(),R.layout.item2,null); vh2.im2 = (ImageView) convertView.findViewById(R.id.tu2); vh2.tv2= (TextView) convertView.findViewById(R.id.zi2); convertView.setTag(vh2); }else { vh2= (viewholder2) convertView.getTag(); } vh2.tv2.setText(list.get(position).getTags()); x.image().bind(vh2.im2,list.get(position).getAlbums().get(0),options); break; } return convertView; } } class viewholder1{ ImageView im1; TextView tv1; } class viewholder2{ ImageView im2; TextView tv2; } }  
转载请注明原文地址: https://www.6miu.com/read-62427.html

最新回复(0)