Xlistview

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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值