TabLayout+XlistView
来源:互联网 发布:java me基础教程 编辑:程序博客网 时间:2024/06/18 06:35
主Activity里做的Tablayout
public class MainActivity extends AppCompatActivity { TabLayout tab; ViewPager vp; List<String> listStr ; List<Fragment> listTv ; // private String[] titles = new String[]{"聊天", "好友", "发现", "我的","聊天", "好友", "发现", "我的","聊天", "好友", "发现", "我的"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tab = (TabLayout) findViewById(R.id.tab); vp = (ViewPager) findViewById(R.id.vp); listStr = new ArrayList(); listStr.add("福利"); listStr.add("Android"); listStr.add("iOS"); listStr.add("休息视频"); listStr.add("拓展资源"); listStr.add("前端"); listStr.add("all"); listTv = new ArrayList<>(); for (int i = 0; i < 7; i++) { listTv.add(new NewsFragment(listStr.get(i))); } vp.setAdapter(new MyAdapter(getSupportFragmentManager())); tab.setTabMode(TabLayout.MODE_SCROLLABLE); tab.setupWithViewPager(vp); } class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return listTv.get(position); } @Override public int getCount() { return listTv.size(); } @Override public CharSequence getPageTitle(int position) { return listStr.get(position); } }}
XlistView的适配器
public class MyApdata extends BaseAdapter { //构造参数 private List<Bean.ResultsBean> list; //创建上下文 private Context context; public MyApdata(List<Bean.ResultsBean> list, Context context) { this.list = list; this.context = context; } public void add(List<Bean.ResultsBean> data, boolean b){ for(Bean.ResultsBean bean: data) { if (b){ list.add(0,bean); }else{ list.add(bean); } } } //有几个条目类型 @Override public int getViewTypeCount() { return 2; } //判断怎样分辨每个条目的位置 @Override public int getItemViewType(int position) { if(position%2==0){ return 0; }else{ return 1; } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder=null; int type = getItemViewType(i); if(view==null){ view=View.inflate(context,R.layout.itme_one,null); holder=new ViewHolder(); holder.iv= (ImageView) view.findViewById(R.id.iv); holder.tv1= (TextView) view.findViewById(R.id.tv1); view.setTag(holder); }else{ holder= (ViewHolder) view.getTag(); } holder.tv1.setText(list.get(i).getDesc()); ImageLoader.getInstance().displayImage(list.get(i).getUrl(),holder.iv); DisplayImageOptions build = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .showImageForEmptyUri(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .showImageOnLoading(R.mipmap.ic_launcher) .build(); return view; } //优化XlistView class ViewHolder{ ImageView iv; TextView tv1 ; }}Fragment里面做的上拉刷新下拉加载
public class NewsFragment extends Fragment implements XListView.IXListViewListener{ private final String s; XListView xlv; int NUM=1; List<Bean.ResultsBean> results; List<Bean.ResultsBean> list = new ArrayList<>(); boolean boo; private MyApdata myApdata; public NewsFragment(String s) { this.s= s; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(),R.layout.fragment,null); xlv =view.findViewById(R.id.xlv) ; //使xlistview支持下拉刷新和上拉加载 xlv.setPullRefreshEnable(true); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); ListGson(); return view; } //ListView的解析 public void ListGson(){ new AsyncTask<String,String,String>(){ @Override protected String doInBackground(String... strings) { String read = getNetDataStr(); // 使用Gson把该字符输入流转换成JavaBean return read; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); Gson gson = new Gson(); Bean bean = gson.fromJson(result, Bean.class); results = bean.getResults(); setAdapter(results); Date date = new Date(System.currentTimeMillis()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); String time = simpleDateFormat.format(date); xlv.setRefreshTime(time); } }.execute(); } public void setAdapter(List<Bean.ResultsBean> list){ if(myApdata == null){ myApdata = new MyApdata(results,getActivity()); xlv.setAdapter(myApdata); }else{ myApdata.add(list,boo); myApdata.notifyDataSetChanged(); } } //下拉刷新 @Override public void onRefresh() { NUM++; boo=true; ListGson(); xlv.stopRefresh(); } //上拉加载 @Override public void onLoadMore() { NUM++; boo=false; ListGson(); xlv.stopLoadMore(); } public String getNetDataStr() { String json = null; try { URL url = new URL( "http://gank.io/api/data/Android/10/"+NUM); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置 conn.setReadTimeout(5000); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = -1; byte[] buff = new byte[1024]; while((len = is.read(buff)) != -1){ bos.write(buff,0,len); } json = new String(bos.toByteArray()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return json; }}
阅读全文
0 0
- TabLayout+XlistView
- Tablayout与XListView
- 实现Banner,TabLayout,XlistView
- TabLayout+Xlistview+第三方登录
- 设置Xlistview在tablayout里面的写法
- TabLayout和banner与XLISTView混合运用
- 侧拉+TabLayout+轮播+XListView
- Tablayout与Viewpager里添加Xlistview实现上拉下拉
- 网络判断+Fragment+ViewPager+XListView+TabLayout横向滑动菜单 Z2
- 网络判断+网络请求+TabLayout+XListview+多条目加载.
- XListView
- XListView
- Xlistview
- XListView
- xListView
- XListView
- xlistview
- xListView
- leetcode MYSQL数据库题目
- feign的基础配置及修改日志输出类型
- poj1475 Pushing Boxes
- 如何破解“千人千面”,深度解读用户画像
- short 和 int 类型的转换
- TabLayout+XlistView
- 数据结构面试知识点整理
- 程序猿之--对诗
- 关于WebStorm一些快捷键的应用
- 前端面试经
- Reading Note: Pyramid Scene Parsing Network
- jQuery遮罩插件jQuery.blockUI.js简介
- 【多线程】interrupt、interrupted、isInterrupted方法
- Oracle自定义函数(function)