AsyncTask

来源:互联网 发布:深圳阿里云大厦图片 编辑:程序博客网 时间:2024/06/06 06:29
public class ListAdapterrs extends BaseAdapter {
private List<Books.DataBean.SerialBean> mlist;
private Context context;
private ViewHolder Viewholder; public ListAdapterrs(ArrayList<Books.DataBean.SerialBean> list, Context context){
mlist=list;
this.context=context;
} @Override
public int getCount() {
return mlist.size();
} @Override
public Object getItem(int position) {
return mlist.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
Viewholder = new ViewHolder();
convertView = View.inflate(context, R.layout.item, null);
Viewholder.textView1= (TextView) convertView.findViewById(R.id.text1);
Viewholder.textView2=(TextView)convertView.findViewById(R.id.text2);
convertView.setTag(Viewholder);
}else {
Viewholder=(ViewHolder)convertView.getTag();
}
Books.DataBean.SerialBean serialBean=mlist.get(position);
Viewholder.textView1.setText(serialBean.getTitle());
Viewholder.textView2.setText(serialBean.getExcerpt());
return convertView;
}
}
class ViewHolder{
TextView textView1;
TextView textView2;
}




public class MyAsyncTask extends AsyncTask<Object,String,String> {
private MainActivity activity;
private ListView mListView;
private ArrayList<Books.DataBean.SerialBean> mList; public MyAsyncTask(MainActivity activity){
this.activity=activity;
}
@Override
protected String doInBackground(Object[] params) {
try {
String path= (String) params[0];
mListView = (ListView) params[1];
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
if (urlConnection.getResponseCode()==HttpURLConnection.HTTP_OK){
InputStream inputStream =urlConnection.getInputStream();
StringBuffer stringBuffer = new StringBuffer();
byte[] by = new byte[1024];
int len= -1;
while((len=inputStream.read(by))!=-1){
String s = new String(by, 0, len, "utf-8");
stringBuffer.append(s); }
inputStream.close();
urlConnection.disconnect();
Log.e("doInBackground","onPostExecute"+stringBuffer.toString());
return stringBuffer.toString();
}else {
return null;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.e("onPostExecute", "onPostExecute: "+s);
Gson gson =new Gson();
mList = new ArrayList<>();
Books books = gson.fromJson(s, Books.class);
mList.addAll(books.getData().getSerial());
ListAdapterrs listAdapterrs=new ListAdapterrs(mList,activity);
mListView.setAdapter(listAdapterrs);
}
}






public class MainActivity extends AppCompatActivity { private ListView mListView;
private String path; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.listview);
if (isNetworkAvailable(this)) {
MyAsyncTask task = new MyAsyncTask(this);
path = "?"
task.execute(path,mListView);
}else {
ArrayList<String> list = new ArrayList<>();
list.add("网络超时");
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
mListView.setAdapter(adapter);
}
}
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected())
{
// 当前网络是连接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 当前所连接的网络可用
return true;
}
}
}
return false;
}
}