异步加载
package com.imooc.AsynTask;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.asyntask.R;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
public class AsyntaskOfListView extends Activity {
ListView listview;
static String url="http://www.imooc.com/api/teacher?type=4&num=30";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
listview=(ListView) findViewById(R.id.listview);
AnysTask task=new AnysTask();
task.execute(url);
}
public List<newsBean> getJsongetJson(String url){
List<newsBean> newsBeanList=new ArrayList<newsBean>();
try {
String jdata=readStream(new URL(url).openStream());
JSONObject jsonObject;
newsBean bean;
try {
jsonObject=new JSONObject(jdata);
JSONArray jsonArray=jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
bean=new newsBean();
jsonObject=jsonArray.getJSONObject(i);
bean.image=jsonObject.getString("picSmall");
bean.title=jsonObject.getString("name");
bean.content=jsonObject.getString("description");
newsBeanList.add(bean);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return newsBeanList;
}
public String readStream(InputStream is){
String result = null;
try {
String line="";
InputStreamReader isr=new InputStreamReader(is, "utf-8");
BufferedReader br=new BufferedReader(isr);
while((line=br.readLine())!=null){
result+=line;
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
class AnysTask extends AsyncTask<String, Void, List<newsBean>>{
@Override
protected List<newsBean> doInBackground(String... params) {
// TODO Auto-generated method stub
return getJsongetJson(params[0]);
}
@Override
protected void onPostExecute(List<newsBean> result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
NewsAdapter adapter=new NewsAdapter(result,AsyntaskOfListView.this);
listview.setAdapter(adapter);
}
}}
适配器
package com.imooc.AsynTask;//适配器
import java.util.List;
import com.example.asyntask.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class NewsAdapter extends BaseAdapter{
private List<newsBean> newsbeanlist;
private LayoutInflater inflater;
public NewsAdapter(List<newsBean> newsbeanlist1,Context context){
this.newsbeanlist=newsbeanlist1;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return newsbeanlist.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return newsbeanlist.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View convertview, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder viewHolder=null;
if(convertview==null){
viewHolder=new ViewHolder();
convertview=inflater.inflate(R.layout.item, null);
viewHolder.image=(ImageView) convertview.findViewById(R.id.imageview);
viewHolder.title=(TextView) convertview.findViewById(R.id.title);
viewHolder.content=(TextView) convertview.findViewById(R.id.content);
convertview.setTag(viewHolder);
}
else{
viewHolder=(ViewHolder) convertview.getTag();
}
viewHolder.image.setImageResource(R.drawable.ic_launcher);
viewHolder.title.setText(newsbeanlist.get(arg0).title);
viewHolder.content.setText(newsbeanlist.get(arg0).content);
return convertview;
}
class ViewHolder{
public TextView title;
public TextView content;
public ImageView image;
}
}
定义的泛型
package com.imooc.AsynTask;
public class newsBean {
public String image;
public String title;
public String content;
}
1 回答
已采纳
慕仰6620973
TA贡献14条经验 获得超8个赞
readStream 这个方法里的
String result = null; 改成String result = "";
就可以了。获取的数据时候,null也会被加进去。
添加回答
举报
0/150
提交
取消