异步解析

加粗样式**

  • 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;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值