package com.bawei.day9rk;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import com.bawei.day9rk.bean.Data;
import com.bawei.day9rk.bean.News;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import android.os.AsyncTask;
import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView lv;
List<News> list;
private MyAdapter adapter;
int current=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
lv= (ListView) findViewById(R.id.lv);
//初始化数据源
initData();
list=new ArrayList<News>();
//设置适配器
adapter = new MyAdapter();
//绑定
lv.setAdapter(adapter);
//滑动触发的监听
lv.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
if (view.getLastVisiblePosition()==list.size()-1) {
current++;
initData();
//Toast.makeText(MainActivity.this, "current:"+current, 0).show();
}
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
}
private void initData() {
// TODO Auto-generated method stub
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
//解析的方法
getData();
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
//刷新
adapter.notifyDataSetChanged();
super.onPostExecute(result);
}
}.execute();
}
//解析
private void getData() {
// TODO Auto-generated method stub
String path="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+current;
try {
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
int code = conn.getResponseCode();
if (code==200) {
Gson gson=new Gson();
Data data = gson.fromJson(new InputStreamReader(conn.getInputStream()), Data.class);
// list=data.getNewslist();
list.addAll(data.getNewslist());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
if (list!=null) {
return list.size();
}
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
//优化
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView==null) {
convertView=View.inflate(MainActivity.this, R.layout.item, null);
holder=new ViewHolder();
holder.tv_title =(TextView) convertView.findViewById(R.id.tv_title);
holder.tv_desc =(TextView) convertView.findViewById(R.id.tv_desc);
holder.tv_time =(TextView) convertView.findViewById(R.id.tv_time);
holder.iv =(ImageView) convertView.findViewById(R.id.iv);
convertView.setTag(holder);
}else {
holder=(ViewHolder) convertView.getTag();
}
holder.tv_title.setText(list.get(position).getTitle());
holder.tv_desc.setText(list.get(position).getDescription());
holder.tv_time.setText(list.get(position).getCtime());
ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(), holder.iv);
return convertView;
}
}
static class ViewHolder{
TextView tv_title,tv_desc,tv_time;
ImageView iv;
}
}
//图片
package com.bawei.day9rk.bean;
import com.bawei.day9rk.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import android.app.Application;
public class Myappction extends Application{
@Override
public void onCreate() {
// TODO Auto-generated method stub
DisplayImageOptions options=new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)
.displayer(new FadeInBitmapDisplayer(2000)).cacheOnDisk(true)
.cacheInMemory(true)
.build();
ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options)
.threadPoolSize(5)
.build();
ImageLoader.getInstance().init(config);
super.onCreate();
}
}
//xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/iv"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="标题" />
<TextView
android:id="@+id/tv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="2"
android:text="描述" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:singleLine="true"
android:text="时间" />
</LinearLayout>
<ImageView
android:id="@+id/iv"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true" />
</RelativeLayout>