加粗样式**
-
AsyncTask(异步处理子线程和主线程交互)
-
-
1:写一个类继承他
-
首先我们看到有泛型里面三个参数 params(接口地址) progress(下载进度) result(返回的结果集)
*/
public class AsyncDemoActivity extends AppCompatActivity implements View.OnClickListener {
private String mUrl = “http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
private Button Async_Send_Btn;
private TextView Async_Get_Text;
private Context mContext;
private ListView mListView;
private MyAdapter mAdapter;
private ArrayList<MyData.DataBean> mList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_async_demo);
mContext = AsyncDemoActivity.this;
initView();
mAdapter = new MyAdapter(mContext,mList);
mListView.setAdapter(mAdapter);
}private void initView() {
Async_Send_Btn = (Button) findViewById(R.id.Async_Send_Btn);
Async_Get_Text = (TextView) findViewById(R.id.Async_Get_Text);
Async_Send_Btn.setOnClickListener(this);
mListView = findViewById(R.id.Async_ListView);
}@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Async_Send_Btn:
//注意事项?异步只能发送一次
new MyTask().execute(mUrl);
break;
}
}class MyTask extends AsyncTask<String, Void, List<MyData.DataBean>> {
@Override
protected List<MyData.DataBean> doInBackground(String… strings) {try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if (connection.getResponseCode() == 200) { InputStream stream = connection.getInputStream(); String str = getStr(stream); Gson gson = new Gson(); MyData myData = gson.fromJson(str, MyData.class); return myData.getData(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<MyData.DataBean> dataBeans) { super.onPostExecute(dataBeans); mAdapter.setList((ArrayList<MyData.DataBean>) dataBeans); } //后台操作的方法 /*@Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if (connection.getResponseCode() == 200) { InputStream stream = connection.getInputStream(); String str = getStr(stream); return str; } } catch (Exception e) { e.printStackTrace(); } return null; } //后台处理完操作返回的数据 //这个方法是执行在UI线程的 @Override protected void onPostExecute(String s) { Async_Get_Text.setText(s); }*/
}
private String getStr(InputStream inputStream) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer sb = new StringBuffer();
String str = “”;//
while ((str = br.readLine()) != null) {
sb.append(str);
}
return sb.toString();
}
}
适配器
package com.example.httpdemo.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.httpdemo.R;
import com.example.httpdemo.bean.MyData;
import java.util.ArrayList;
/**
-
ListView 多条目展示
-
getItemViewType
*/
public class MyAdapter extends BaseAdapter {private Context mContext;
private ArrayList<MyData.DataBean> mList;public MyAdapter(Context mContext, ArrayList<MyData.DataBean> mList) {
this.mContext = mContext;
this.mList = mList;
}public void setList(ArrayList<MyData.DataBean> list){
this.mList = list;
notifyDataSetChanged();
}@Override
public int getCount() {
//三元表达式
return mList.isEmpty() ? 0 : mList.size();
}@Override
public Object getItem(int position) {
return null;
}@Override
public long getItemId(int position) {
return 0;
}@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = View.inflate(mContext, R.layout.listview_item, null);
viewHolder.mText = convertView.findViewById(R.id.Title_Text);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.mText.setText(mList.get(position).getNews_title() + “”);
return convertView;
}class ViewHolder {
private TextView mText;
}
}