Android中post请求AsyncTask延时

本文介绍了一个基于Android平台的新闻应用开发案例,通过使用AsyncTask实现数据的异步加载,并结合Gson进行JSON数据解析。文章详细展示了如何利用ImageLoader进行图片的高效加载和缓存,同时实现了列表视图中各项新闻条目的展示与点击跳转功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private String path="http://qhb.2dyt.com/Bwei/news?page=1&type=7&postkey=ad1AK";
private String s;
private List<BweiBean.ListEntity> list;
private ListView mylist;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //找控件
    mylist = (ListView) findViewById(R.id.mylist);
    //创建AdyncTask
    AsyncTask<Void, Void, String> Asynctask = new AsyncTask<Void, Void, String>() {
       //此方法充当子线程
        @Override
        protected String doInBackground(Void... voids) {
            try {

                //创建URL把接口放进来
                URL url = new URL(path);
                //得到URL对象的值
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
               //请求方式
                connection.setRequestMethod("GET");
                //链接超时时间
                connection.setConnectTimeout(8000);
                //请求码判断
                if(connection.getResponseCode() == 200){
                    //得到InputStream
                    InputStream inputStream = connection.getInputStream();
                    //字节流转换成字符流
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    int len = 0;
                    byte[] buffer = new byte[1024];
                    while((len = inputStream.read(buffer)) != -1){
                        baos.write(buffer,0,len);
                    }

                    s = baos.toString();

                }
                    return s;
            } catch (Exception e) {
                e.printStackTrace();
            }


            return null;
        }
        //此方法充当主线程
        @Override
        protected void onPostExecute(String s) {
            //Gson解析
            Gson gson = new Gson();
            //Gson解析
            BweiBean bweiBean = gson.fromJson(s, BweiBean.class);
            //把值赋给List
            list=bweiBean.list;
            //适配器
            MyBase adapter = new MyBase(MainActivity.this,list);
             mylist.setAdapter(adapter);
            super.onPostExecute(s);
        }
    };
    Asynctask.execute();
    //ListView条目点击
    mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
           //跳转传值
            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
            intent.putExtra("title",list.get(i).title);
            intent.putExtra("data",list.get(i).date);
            intent.putExtra("pic",list.get(i).pic);
            startActivity(intent);
        }
    });

}

-----------------------------------------------------------------------------------------------------------------------------------------------

 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    //接收传过来的值
    String title = getIntent().getStringExtra("title");
    String data = getIntent().getStringExtra("data");
    String pic = getIntent().getStringExtra("pic");
    //找控件
    TextView text1= (TextView) findViewById(R.id.text1);
    TextView text3= (TextView) findViewById(R.id.text3);
   ImageView image1= (ImageView) findViewById(R.id.image1);
    //赋值
    text1.setText("title:"+title);
    text3.setText("data:"+data);
    setImage(pic,Main2Activity.this,image1);
}
public static void setImage(String url , Context context, ImageView imageView){
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();
        ImageLoader imageLoader = ImageLoader.getInstance();
        imageLoader.init(config);
        DisplayImageOptions diosplay =new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.mipmap.ic_launcher)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new RoundedBitmapDisplayer(90))
                .build();
        imageLoader.displayImage(url,imageView,diosplay);
    }

------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

public int ret_code;
public String ret_msg;
public List<ListEntity> list;

public static class ListEntity {
    /**
     * date : 111
     * id : 1
     * pic : http://p1.pstatp.com/large/22c90001cf8b5388ce33
     * title :
     他“秘书圈”的人数规模
     * type : 1
     */

    public String date;
    public int id;
    public String pic;
    public String title;
    public int type;
}

--------------------------------------------------------------------------------------------------------------------------------

 

 

public class MyBase extends BaseAdapter {
    private Context context;
    private List<BweiBean.ListEntity> list;

    public MyBase(Context context, List<BweiBean.ListEntity> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if(view == null){
            holder = new ViewHolder();
            view = View.inflate(context,R.layout.item,null);
            holder.image_view= (ImageView) view.findViewById(R.id.image_view);
            holder.text_view1= (TextView) view.findViewById(R.id.text_view1);

            view.setTag(holder);

        }else{
            holder= (ViewHolder) view.getTag();
        }
        holder.text_view1.setText("title:"+list.get(i).title+"\n"+"data:"+list.get(i).date);

        setImage(list.get(i).pic,context,holder.image_view);
        return view;
    }

    //创建ImageLoader
    public static void setImage(String url , Context context,ImageView imageView){
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();
            ImageLoader imageLoader = ImageLoader.getInstance();
            imageLoader.init(config);
            DisplayImageOptions diosplay =new DisplayImageOptions.Builder()
                    .showImageOnLoading(R.mipmap.ic_launcher)
                    .showImageForEmptyUri(R.mipmap.ic_launcher)
                    .showImageOnFail(R.mipmap.ic_launcher)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();
            imageLoader.displayImage(url,imageView,diosplay);
        }


    class ViewHolder{
        ImageView image_view;
        TextView text_view1;
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值