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); } }
相关推荐
CoppeliaSim学习笔记(1):建立Python脚本与CoppeliaSim的连接
CoppeliaSim学习笔记,建立python和CoppeliaSim的连接,实现联调。
PullToRefresh使用示例:XListView下拉刷新与上拉加载完整指南
PullToRefresh是一个基于Maxwin的XListView改造的Android下拉刷新库,它不仅完善了下拉刷新和上拉加载更多功能,还实现了自动刷新、自动加载等特性,并增加了对ScrollView的支持。本指南将通过简单步骤和实际界面展示,帮助你快速掌握这个强大的下拉刷新组件。 ## 项目快速开始 首先需要将项目代码克隆到本地环境: ```bash git clone https:/
别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量
本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。
XListView
//第二布:找控件 xListView = findViewById(R.id.xlistview); //第三布:启动或禁用上拉加载 xListView.setPullLoadEnable(true); //注册接口 xListView.setXListViewListener(new XListView....
cJSON库用完后内存泄漏?手把手教你正确使用cJSON_Delete和free释放资源
本文深入解析cJSON库的内存管理机制,重点解决使用后的内存泄漏问题。通过详细讲解cJSON_Delete和free的正确使用方法,帮助开发者在处理JSON数据时有效释放资源,避免内存泄漏。特别适用于嵌入式系统和资源受限环境,提升开发效率和系统稳定性。
STM32 SYSTICK定时器及延时函数详解
STM32 SYSTICK及延时函数详解 SysTick定时器 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心
XListView-Android 使用教程
XListView-Android 是由 Maxwin-z 开发的一个针对 Android 平台的列表视图组件,它主要提供了上拉刷新和下拉加载更多的功能。这个库在早期是非常流行的,适用于那些需要动态加载数据的应用场景,如社交媒体、新闻阅读等。XListView通过集成刷新机制,简化开发者对这一常见需求的处理,提升用户体验。 ## 项目快速启动 要快速开始使用 XListView-Android...
MediaPipe实战:从零构建人脸关键点检测应用
本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。
XListView的使用
//XListView主要是要实现条目的上拉加载和下拉刷新的功能 在使用的时候需要导入一个Module包(可以自己手写也可以向小编留言私发) 因为解析时需要网络权限和图片的解析等等,所以记得加权限和依赖等操作,准备就绪开始上代码 1.首先布局-------宽高ID无所谓但必须是xlistview.bawei.com.xlistviewlibrary.XListView这个控件 &l...
AgentScope深入分析-ReActAgent
ReActAgent 是 AgentScope 框架中最核心的智能体实现,它完美诠释了"推理-行动"(Reasoning-Acting)循环的精髓。本文将深入分析 ReActAgent 的类继承关系、核心执行流程,以及状态管理、钩子机制、实时介入等关键技术点。通过阅读本文,你会理解智能体如何与模型交互、如何执行工具、如何处理中断,以及这些机制背后的设计考量。模块化:通过组合不同的组件(模型、格式化器、工具集、记忆)来构建智能体透明性:所有关键流程都对开发者可见,可以精确控制可扩展性。
置顶必读(2) |《滚雪球学数学建模》专栏目录 & 历年国赛/美赛真题库 & 真题解析(持续更新中)
本专栏《滚雪球学数学建模》采用“从零开始、逐步滚雪球”的学习路径,把数学建模的基础理论、方法工具与大量实战真题(尤其是国赛题,涵盖2025-1992所有真题)有机融合,形成一套系统化训练路线。非常适合零基础入门、希望提升模型与工程化能力的本科/研究生,以及备战全国大学生数学建模竞赛(国赛/省赛)的同学。加油,我们一起把建模能力打造成可迁移的核心竞争力!
xlistview
xlistview的所在类,需要实现IXlistview的一个监听,主代码如下: package example.xuexue.yuekao; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; im
基于 ESP32 的智能药盒提醒装置设计与实现
本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。
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
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
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
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
XListView使用
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
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-...
1万+



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



