MyAsyncTask 请求图片以及Json解析展示到列表

  请求图片
  请求图片需要在Application中注册
  然后新建一个App的类
  请求图片(参数:1.图片接口 ,2 imageview的控件)
  ImageLoader.getInstance().displayImage(uri, imageView);  
 注意 网络权限
 适配器里的代码如下

@Override
public View getView(int position, View convertView, ViewGroup parent) {

       convertView= LayoutInflater.from(context).inflate(R.layout.item,null);

       ImageView imageView=convertView.findViewById(R.id.imageView);
       TextView name=convertView.findViewById(R.id.name);


   JsonBean.Datas datas=list.get(position);
    name.setText(datas.getNews_title());
   String uri= datas.getPic_url();

    ImageLoader.getInstance().displayImage(uri,imageView);
    return convertView;
}

在新建的App里获得实例初始化

public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//1构建
ImageLoaderConfiguration loaderConfiguration=
new ImageLoaderConfiguration
.Builder(this).

            build();

//获得实例
ImageLoader imageLoader=ImageLoader.getInstance();
//初始化
imageLoader.init(loaderConfiguration);

}

}
//Http中设置uri 和get请求

public class Http {
public static String requestHttpGet(String strUrl){
try {
//设置url
URL url=new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置为get请求
connection.setRequestMethod(“GET”);
//如果数据请求成功
//就获取数据
InputStream stream = connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(stream,“utf-8”));
//拼接字符串
StringBuilder builder=new StringBuilder();
//把数据读取从成字符串
String str="";
while ((str=reader.readLine())!=null){
//把一行行数据拼接成一行数据
builder.append(str);
}
//返回拼接后的数据
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}

    return null;
}

}
MyAsyncTask
//第一个泛型 代表你要给子线程传的东西
//第二个泛型 代表任务执行的进度 用Integer
//第三个泛型 代表解析完成后子线程返回的值,以及主线程接受的值

///第四:继承AsyncTask,然后写三个泛型,< String,Integer,String>
public class MyAsyncTask extends AsyncTask<String,Integer,String> {
@Override
protected String doInBackground(String… strings) {
//代表子线程
//第五步:利用子线程请求数据
return Http.requestHttpGet(strings[0]);
}

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    //主线程
    //5调用
    mcallBackS.getData(s);
}
//第六步:接口回调=================第七步/:进入MainActivity
//1创建接口
public interface CallBackS{
    //2抽象方法
    void getData(String str);
}
//3写个属性
private CallBackS mcallBackS;
//4写一个set方法
public void setMcallBackS(CallBackS mcallBackS) {
    this.mcallBackS = mcallBackS;
}

}
在MainActivity中的代码如下
public class MainActivity extends AppCompatActivity implements View.OnClickListener,MyAsyncTask.CallBackS {

private ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.button1).setOnClickListener(this);
    listView = findViewById(R.id.listview);
}

@Override
public void getData(String str) {
    Gson gson=new Gson();
    JsonBean jsonBean = gson.fromJson(str, JsonBean.class);
    ArrayList<JsonBean.Datas> data=jsonBean.getData();
    listView.setAdapter(new MyAdapter(data,MainActivity.this));

    Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
@Override
public void onClick(View v) {

switch (v.getId()){
case R.id.button1:
MyAsyncTask task=new MyAsyncTask();
task.setMcallBackS(MainActivity.this);
task.execute(“http://api.expoon.com/AppNews/getNewsList/type/1/p/1”);

break;

}
}

}
效果展示图在这里插入图片描述
_在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值