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); } }
Xlistview
最新推荐文章于 2019-01-09 20:30:06 发布