package text.com.yuekaodemo4;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.w3c.dom.Text;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import maqian.baidu.com.xlistviewlibrary.XListView;
import text.com.yuekaodemo4.bean.News;
import text.com.yuekaodemo4.utils.StreamUtils;
public class MainActivity extends AppCompatActivity {
private XListView xlv;
private Handler hand;
private int page=1;
private MyAdapter adapter;
private ArrayList<News.DataBean> list=new ArrayList<>();
private ArrayList<News.DataBean> listd=new ArrayList<>();
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
list = (ArrayList<News.DataBean>) msg.obj;
for(int i=0;i<list.size();i++){
listd.add(list.get(i));
}
getAdapter();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hand= new Handler();
initViews();
}
private void initViews() {
xlv = (XListView) findViewById(R.id.xlv);
xlv.setPullRefreshEnable(true);
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
new Thread(new Runnable() {
@Override
public void run() {
page=1;
getDates();
}
}).start();
hand.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopRefresh();
}
},2000);
}
@Override
public void onLoadMore() {
new Thread(new Runnable() {
@Override
public void run() {
page++;
getDates();
}
}).start();
hand.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
},2000);
}
});
new Thread(new Runnable() {
@Override
public void run() {
getDates();
}
}).start();
}
//刷新适配器的方法
private void getAdapter(){
if(adapter==null){
adapter = new MyAdapter();
xlv.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
}
private void getDates(){
String jsonUrl="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api="+page;
//进行数据的解析
try {
URL url=new URL(jsonUrl);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
if(conn.getResponseCode()==200){
InputStream stream = conn.getInputStream();
String path = StreamUtils.getPath(stream);
Gson gson=new Gson();
News news = gson.fromJson(path, News.class);
ArrayList<News.DataBean> list = (ArrayList<News.DataBean>) news.getData();
Message message = handler.obtainMessage(0, list);
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return listd.size();
}
@Override
public Object getItem(int position) {
return listd.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(MainActivity.this,R.layout.list_layout,null);
holder=new ViewHolder();
holder.title= (TextView) convertView.findViewById(R.id.title_list);
holder.source= (TextView) convertView.findViewById(R.id.source_list);
holder.gridView= (GridView) convertView.findViewById(R.id.gridView);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
holder.title.setText(listd.get(position).getTitle());
holder.source.setText(listd.get(position).getSource());
ArrayList<News.DataBean.ImageListBean> image_list = (ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list();
// holder.gridView.setNumColumns(image_list.size());
holder.gridView.setAdapter(new MyAdapterGrid((ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list()));
return convertView;
}
}
class ViewHolder{
TextView title;
TextView source;
GridView gridView;
}
private class MyAdapterGrid extends BaseAdapter{
private ArrayList<News.DataBean.ImageListBean> lista;
public MyAdapterGrid(ArrayList<News.DataBean.ImageListBean> list) {
this.lista=list;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder1 holder1=null;
if(convertView==null){
convertView=View.inflate(MainActivity.this,R.layout.grid_layout,null);
holder1=new ViewHolder1();
holder1.im= (ImageView) convertView.findViewById(R.id.grid_im);
convertView.setTag(holder1);
}else {
holder1= (ViewHolder1) convertView.getTag();
}
Log.i("===>",lista.get(position).getUrl());
//设置图片的宽高不然图片不出来
ImageLoader.getInstance().displayImage(lista.get(position).getUrl(),holder1.im);
return convertView;
}
}
class ViewHolder1{
ImageView im;
}
}
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.w3c.dom.Text;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import maqian.baidu.com.xlistviewlibrary.XListView;
import text.com.yuekaodemo4.bean.News;
import text.com.yuekaodemo4.utils.StreamUtils;
public class MainActivity extends AppCompatActivity {
private XListView xlv;
private Handler hand;
private int page=1;
private MyAdapter adapter;
private ArrayList<News.DataBean> list=new ArrayList<>();
private ArrayList<News.DataBean> listd=new ArrayList<>();
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
list = (ArrayList<News.DataBean>) msg.obj;
for(int i=0;i<list.size();i++){
listd.add(list.get(i));
}
getAdapter();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hand= new Handler();
initViews();
}
private void initViews() {
xlv = (XListView) findViewById(R.id.xlv);
xlv.setPullRefreshEnable(true);
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
new Thread(new Runnable() {
@Override
public void run() {
page=1;
getDates();
}
}).start();
hand.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopRefresh();
}
},2000);
}
@Override
public void onLoadMore() {
new Thread(new Runnable() {
@Override
public void run() {
page++;
getDates();
}
}).start();
hand.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
},2000);
}
});
new Thread(new Runnable() {
@Override
public void run() {
getDates();
}
}).start();
}
//刷新适配器的方法
private void getAdapter(){
if(adapter==null){
adapter = new MyAdapter();
xlv.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
}
private void getDates(){
String jsonUrl="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api="+page;
//进行数据的解析
try {
URL url=new URL(jsonUrl);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
if(conn.getResponseCode()==200){
InputStream stream = conn.getInputStream();
String path = StreamUtils.getPath(stream);
Gson gson=new Gson();
News news = gson.fromJson(path, News.class);
ArrayList<News.DataBean> list = (ArrayList<News.DataBean>) news.getData();
Message message = handler.obtainMessage(0, list);
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return listd.size();
}
@Override
public Object getItem(int position) {
return listd.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(MainActivity.this,R.layout.list_layout,null);
holder=new ViewHolder();
holder.title= (TextView) convertView.findViewById(R.id.title_list);
holder.source= (TextView) convertView.findViewById(R.id.source_list);
holder.gridView= (GridView) convertView.findViewById(R.id.gridView);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
holder.title.setText(listd.get(position).getTitle());
holder.source.setText(listd.get(position).getSource());
ArrayList<News.DataBean.ImageListBean> image_list = (ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list();
// holder.gridView.setNumColumns(image_list.size());
holder.gridView.setAdapter(new MyAdapterGrid((ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list()));
return convertView;
}
}
class ViewHolder{
TextView title;
TextView source;
GridView gridView;
}
private class MyAdapterGrid extends BaseAdapter{
private ArrayList<News.DataBean.ImageListBean> lista;
public MyAdapterGrid(ArrayList<News.DataBean.ImageListBean> list) {
this.lista=list;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder1 holder1=null;
if(convertView==null){
convertView=View.inflate(MainActivity.this,R.layout.grid_layout,null);
holder1=new ViewHolder1();
holder1.im= (ImageView) convertView.findViewById(R.id.grid_im);
convertView.setTag(holder1);
}else {
holder1= (ViewHolder1) convertView.getTag();
}
Log.i("===>",lista.get(position).getUrl());
//设置图片的宽高不然图片不出来
ImageLoader.getInstance().displayImage(lista.get(position).getUrl(),holder1.im);
return convertView;
}
}
class ViewHolder1{
ImageView im;
}
}