package com.gss.demo; import android.content.Intent; import android.content.SharedPreferences; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.andy.library.ChannelActivity; import com.andy.library.ChannelBean; import com.gss.demo.adapter.MyAdapter; import com.gss.demo.bean.MyBean; import com.gss.demo.utils.GlideImageLoader; import com.gss.demo.xlistview.XListView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.squareup.okhttp.Call; import com.squareup.okhttp.Callback; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import com.youth.banner.Banner; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private Banner mybanner; private XListView xlist; private TextView news; private TextView my; private String url = "http://api.kkmh.com/v1/topic_new/discovery_module_list/210?offset=0&limit=3&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=2"; private List<MyBean.DataBean.TopicsBean> list = new ArrayList<>(); private List<String> urlList = new ArrayList<>(); private Handler handler = new Handler(); private MyAdapter adapter; private List<ChannelBean> channelList = new ArrayList<>(); private String jsonBeans; private SharedPreferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化VIew initView(); //初始化数据 initlistData(); //初始化Banner数据 initbannerData(); //进入频道管理界面 inPindao(); my.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, QQLogin.class)); } }); } //点击进入频道管理界面 private void inPindao() { news.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (jsonBeans == null) { //添加频道数据 initList(); ChannelActivity.startChannelActivity(MainActivity.this, channelList); } else { ChannelActivity.startChannelActivity(MainActivity.this, jsonBeans); } } }); } //这是添加频道管理item数据方法 private void initList() { channelList.add(new ChannelBean("热点", true)); channelList.add(new ChannelBean("视频", true)); channelList.add(new ChannelBean("社会", false)); channelList.add(new ChannelBean("图片", false)); channelList.add(new ChannelBean("军事", false)); channelList.add(new ChannelBean("体育", false)); channelList.add(new ChannelBean("汽车", false)); channelList.add(new ChannelBean("国境", false)); channelList.add(new ChannelBean("娱乐", false)); } //使用OKHTTP请求网络数据 private void initlistData() { OkHttpClient client = new OkHttpClient(); final Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { if (response.body() != null && response.isSuccessful()) { String result = response.body().string(); MyBean bean = MyBean.objectFromData(result); list = bean.data.topics; //使用handler来进行耗时操作 handler.post(new Runnable() { @Override public void run() { //配置适配器 xlist.setAdapter(new MyAdapter(MainActivity.this, list)); } }); } } }); } //给banner添加图片url,设置自动轮播时限 private void initbannerData() { mybanner.setImageLoader(new GlideImageLoader()); urlList.add("http://f2.kkmh.com/image/170707/slcyrhmrg.webp-w640"); urlList.add("http://f2.kkmh.com/image/170622/866bjp30v.webp-w640"); urlList.add("http://f2.kkmh.com/image/170703/3c0w96gm4.webp-w640"); mybanner.setImages(urlList); mybanner.setDelayTime(3000); mybanner.start(); } private void initView() { //初始化控件 mybanner = (Banner) findViewById(R.id.mybanner); xlist = (XListView) findViewById(R.id.xlistview); news = (TextView) findViewById(R.id.news); my = (TextView) findViewById(R.id.my); //初始化imageloader ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(MainActivity.this)); //初始化Xlistview xlist.setPullLoadEnable(true); xlist.setPullRefreshEnable(true); xlist.setXListViewListener(MainActivity.this); adapter = new MyAdapter(MainActivity.this, list); //初始化SharedPreferences preferences = getSharedPreferences("channel", MODE_PRIVATE); jsonBeans = preferences.getString("beans", null); } @Override public void onRefresh() { adapter.onRefreshData(list); initlistData(); adapter.notifyDataSetChanged(); xlist.stopRefresh(); } @Override public void onLoadMore() { initbannerData(); xlist.stopLoadMore(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE) { jsonBeans = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY); } } @Override public void onBackPressed() { super.onBackPressed(); SharedPreferences.Editor editor = preferences.edit(); editor.putString("beans", jsonBeans); editor.commit(); } } -----------------------------------------------------------------------------------------------------------------package com.gss.demo.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.gss.demo.R; import com.gss.demo.bean.MyBean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; /** * Created by lenovo on 2017/9/20. */ public class MyAdapter extends BaseAdapter { private Context context; private List<MyBean.DataBean.TopicsBean> list = new ArrayList<>(); private ImageLoader loader; public MyAdapter(Context context, List<MyBean.DataBean.TopicsBean> list) { this.context = context; this.list = list; loader = ImageLoader.getInstance(); } //刷新数据 public void onRefreshData(List<MyBean.DataBean.TopicsBean> data) { this.list.clear(); onLoadMoreData(data); } //加载更多数据 public void onLoadMoreData(List<MyBean.DataBean.TopicsBean> data) { this.list.addAll(data); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title.setText(list.get(position).title); holder.content.setText(list.get(position).description); loader.displayImage(list.get(position).vertical_image_url, holder.img); return convertView; } class ViewHolder { public View view; public TextView title, content; public ImageView img; public ViewHolder(View view) { this.view = view; this.content = (TextView) view.findViewById(R.id.item_content); this.title = (TextView) view.findViewById(R.id.item_title); this.img = (ImageView) view.findViewById(R.id.item_img); } } }----------------------------------------------------------------------------------------------------------------public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { //使用Glide加载图片 Glide.with(context).load(path).into(imageView); } }-------------------------------------------------------------------------------------------------------------------package com.gss.demo; import android.app.Application; import android.content.Context; import android.util.Log; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.utils.StorageUtils; import com.umeng.socialize.PlatformConfig; import com.umeng.socialize.UMShareAPI; import java.io.File; /** * Created by lenovo on 2017/9/21. */ public class APP extends Application { public static APP app; { PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); } @Override public void onCreate() { super.onCreate(); initImageLoader(getApplicationContext()); app = this; UMShareAPI.get(this); } /** * 获取Application */ public static APP getApp() { return app; } //初始化imagerLoader 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);//全局初始化此配置 } }----------------------------------------------------------------------------------------------------------------------------------package com.gss.demo; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.bean.SHARE_MEDIA; import java.util.Map; /** * Created by lenovo on 2017/9/21. */ public class QQLogin extends AppCompatActivity { private ImageView qq_head; private TextView qq_name; private Button qq_login; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.qqlogin_layout); qq_head = (ImageView) findViewById(R.id.qq_head); qq_name = (TextView) findViewById(R.id.qq_name); qq_login = (Button) findViewById(R.id.qq_login); qq_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { UMShareAPI.get(QQLogin.this).getPlatformInfo(QQLogin.this, SHARE_MEDIA.QQ, umAnthLinstener); } }); } private UMAuthListener umAnthLinstener = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { String name = map.get("name"); String gender = map.get("gender"); String imgUrl = map.get("iconurl"); qq_name.setText(name + " " + gender); ImageLoader.getInstance().displayImage(imgUrl, qq_head); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { } @Override public void onCancel(SHARE_MEDIA share_media, int i) { } }; //添加ActivityResult @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } }
相关推荐
别再为多相机标定头疼了!用VisionMaster统一坐标系的保姆级教程
本文详细介绍了使用VisionMaster平台解决多相机视觉系统中坐标系统一问题的完整流程。从标定板选择到N点标定,再到实战演练,提供了从原理到落地的全方位指导,帮助工程师高效解决多相机定位引导中的坐标偏差问题。
PullToRefresh使用示例:XListView下拉刷新与上拉加载完整指南
PullToRefresh是一个基于Maxwin的XListView改造的Android下拉刷新库,它不仅完善了下拉刷新和上拉加载更多功能,还实现了自动刷新、自动加载等特性,并增加了对ScrollView的支持。本指南将通过简单步骤和实际界面展示,帮助你快速掌握这个强大的下拉刷新组件。 ## 项目快速开始 首先需要将项目代码克隆到本地环境: ```bash git clone https:/
手把手教你用树莓派蓝牙抓取小米温湿度计2代数据,接入HomeAssistant(附密钥获取避坑指南)
本文详细介绍了如何通过树莓派蓝牙抓取小米温湿度计2代数据并接入HomeAssistant的完整流程。重点解析了获取32位加密密钥的三种方法,包括使用Telink Flasher工具、米家APP抓包和开源工具ATC_MiThermometer,并提供了HomeAssistant集成配置和常见问题排查指南,帮助用户实现稳定可靠的温湿度监测。
XListView
//第二布:找控件 xListView = findViewById(R.id.xlistview); //第三布:启动或禁用上拉加载 xListView.setPullLoadEnable(true); //注册接口 xListView.setXListViewListener(new XListView....
clang-tidy 使用指南
clang-tidy 需要一个编译数据库来了解如何编译你的代码。编译数据库通常是一个名为 compile_commands.json 的文件。在这个示例中,clang-tidy 会对 test.cpp 文件进行分析,并报告任何潜在的问题。例如,它可能会警告 test 函数中的未使用变量 x。clang-tidy 是一个用于 C++ 代码的静态分析工具,可以帮助你发现代码中的潜在问题和改进点。这将在 build 目录中生成一个 compile_commands.json 文件。
Python+Flask+Echarts打造全国气象数据可视化分析大屏
本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。
XListView-Android 使用教程
XListView-Android 是由 Maxwin-z 开发的一个针对 Android 平台的列表视图组件,它主要提供了上拉刷新和下拉加载更多的功能。这个库在早期是非常流行的,适用于那些需要动态加载数据的应用场景,如社交媒体、新闻阅读等。XListView通过集成刷新机制,简化开发者对这一常见需求的处理,提升用户体验。 ## 项目快速启动 要快速开始使用 XListView-Android...
【WRF-Chem】预处理工具(Preprocessors)总结
预处理工具(Preprocessors)总结
XListView的使用
//XListView主要是要实现条目的上拉加载和下拉刷新的功能 在使用的时候需要导入一个Module包(可以自己手写也可以向小编留言私发) 因为解析时需要网络权限和图片的解析等等,所以记得加权限和依赖等操作,准备就绪开始上代码 1.首先布局-------宽高ID无所谓但必须是xlistview.bawei.com.xlistviewlibrary.XListView这个控件 &l...
17、扩展景深成像的瞳孔函数工程技术解析
本文详细解析了扩展景深成像的关键技术,包括基于焦距堆栈的数字处理方法、立方相位掩模的光学设计、对数非球面透镜的应用以及旋转点扩散函数的深度编码功能。通过实验验证和实际应用分析,展示了这些技术在显微镜成像、工业检测和医疗影像中的广泛用途及优势。同时探讨了未来发展方向,如智能算法优化、新型光学材料和多模态成像技术,为相关领域的技术创新提供了参考。
GameFramework框架详解之 框架总览
一.前言 目前市场上有很多优秀个开源框架,比如ET,GameFramework,DBFramework,StrangeIOC,Loxodon-Framework,KSFramework,xluaFramework等等。其中要说规范的话,不得不说GameFramework还是不错的,当然很多新手看到后会觉的有点复杂,写一个小小的功能,不得不套用一堆东西,继承一堆接口,感觉不知所措,不能随心所欲的去撸代码。其实这个框架就是为了约束新手的行为的,让我们面向接口编程,遵循“开闭”的设计原则来写代码,方便后期的扩
xlistview
xlistview的所在类,需要实现IXlistview的一个监听,主代码如下: package example.xuexue.yuekao; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; im
药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例
定义分子结构文件。
xlistview的布局
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:co
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
XListView汇总
XListView.java import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.vie
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
XListView使用
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
XListView下拉刷新
XListView控件是下拉刷新的中用到的控件,这个控件在下拉刷新的控件家庭中是最简单的吧。还有其他的下拉刷新控件适合在andrid studio中用到并且很方便使用,在eclipse中不支持不是jar包的格式,不能导进lib中,这些控件举几个例子:android-pulltorefresh、android-pulltorefresh-listview、android-Ultra-Pull-to-
xListView
package com.bwie.yukao;import java.io.IOException; import java.text.SimpleDateFormat; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; imp
XListView 的配置
1 首先要先粘贴3个Java文档 一个箭头图片 2个String文件 3个xml布局 2 在mainActivity中布局 android:id="@+id/xListView" android:layout_width="fill_parent" android:layout_hei
XListView视图
XlIstView在github上开源,,,地址:https://github.com/Maxwin-z/XListView-Android * 1.下载gitHub上XlistView上的压缩包 * 2.复制view包下的三个类,,,,,注意导包的问题 * 3.赋值layout下面的footer布局和header的布局 * 4.赋值string下面的字段值 * *...
XListview展示优化后
package com.example.week2_04.frag; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import andr...
如何使用XlistView
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-...
632



被折叠的 条评论
为什么被折叠?



