80,337
社区成员
发帖
与我相关
我的任务
分享
package com.example.helloworld.AppTest.test2;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.example.helloworld.R;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class main extends AppCompatActivity {
private static String URL="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573652524957&di=bcc7c99a99cd075ed1846be02f3aa636&imgtype=0&src=http%3A%2F%2Fimage2.sina.com.cn%2Fent%2Fd%2F2005-06-21%2FU105P28T3D758541F326DT20050621155848.jpg";
private ListView lv;
private List<HashMap<String,Object>> list_data=new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.apptest_main);
Bitmap bitmap=null;
lv=findViewById(R.id.lv);
MyAsyncTask myAsyncTask=new MyAsyncTask(bitmap);
myAsyncTask.execute(URL);
HashMap<String,Object> map=new HashMap<>();
map.put("image",bitmap);
list_data.add(map);
myadapter2 myadapter2=new myadapter2(this,list_data);
lv.setAdapter(myadapter2);
}
class MyAsyncTask extends AsyncTask<String,Void, Bitmap>{
private Bitmap bp=null;
public MyAsyncTask(Bitmap bitmap) {
bp=bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
bp=bitmap;
}
@Override
protected Bitmap doInBackground(String... strings) {
String URL=strings[0];
Bitmap bitmap=null;
HttpURLConnection conn=null;
InputStream is=null;
try {
URL url=new URL(URL);
conn= (HttpURLConnection) url.openConnection();
is=conn.getInputStream();
bitmap= BitmapFactory.decodeStream(is);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (is!=null)
is.close();
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return bitmap;
}
}
}
package com.example.helloworld.AppTest.test2;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.example.helloworld.R;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class myadapter2 extends BaseAdapter {
List<HashMap<String,Object>> list;
LayoutInflater inflater;
public myadapter2(Context context,List<HashMap<String, Object>> list) {
inflater=LayoutInflater.from(context);
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view==null){
view=inflater.inflate(R.layout.apptest_item,null);
viewHolder=new ViewHolder();
viewHolder.imageView=view.findViewById(R.id.iv_test);
view.setTag(viewHolder);
}
else {
viewHolder= (ViewHolder) view.getTag();
}
viewHolder.imageView.setImageResource(R.mipmap.ic_launcher);
viewHolder.imageView.setImageBitmap((Bitmap) list.get(i).get("image"));
return view;
}
static class ViewHolder{
public ImageView imageView;
}
}
public class MainActivity extends AppCompatActivity {
public static String URL = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573652524957&di=bcc7c99a99cd075ed1846be02f3aa636&imgtype=0&src=http%3A%2F%2Fimage2.sina.com.cn%2Fent%2Fd%2F2005-06-21%2FU105P28T3D758541F326DT20050621155848.jpg";
private ListView lv;
private List<HashMap<String, Object>> list_data = new ArrayList<>();
private MyAdapter mMyAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.apptest_main);
Bitmap bitmap = null;
lv = findViewById(R.id.lv);
new MyAsyncTask().execute();
}
class MyAsyncTask extends AsyncTask<Void, Void, Bitmap> {
public MyAsyncTask() {
}
@Override
protected Bitmap doInBackground(Void... voids) {
Bitmap bitmap = null;
HttpURLConnection conn = null;
InputStream is = null;
try {
java.net.URL url = new URL(URL);
conn = (HttpURLConnection) url.openConnection();
is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
Log.d(TAG, "bitmap=" + bitmap);
HashMap<String, Object> map = new HashMap<>();
map.put("image", bitmap);
list_data.add(map);
mMyAdapter = new MyAdapter(this, list_data);
lv.setAdapter(mMyAdapter);
}
}
}
myadapter2 myadapter2 = new myadapter2(this,list_data);
lv.setAdapter(myadapter2);
oncreate里的这两行code去掉
HashMap<String,Object> map=new HashMap<>();
map.put("image",bitmap);
list_data.add(map);
myadapter2 myadapter2=new myadapter2(this,list_data);
lv.setAdapter(myadapter2);
把这块放在onPostExecute里,不需要bp变量了;或者在onPostExecute里添加数据再notifyDataSetChanged
另外建议直接学习RecyclerView,listview过时了