Listview加载网络数据、图片并跳转传值
来源:互联网 发布:信息技术软件介绍ppt 编辑:程序博客网 时间:2024/05/16 14:50
1、自定义Adapter,里面有一个Imageview跟三个Textview,其中只有两个Textview是显示出来的,另一个是不显示,用来存值,将这个值传递到跳转的界面的:
public class LvImageAdapter extends BaseAdapter {private ArrayList<String> mArrayList,mArrayList1,mArrayList2,mArrayList3;private Context mContext;private static Handler mHandler;private static LruCache<String, Bitmap> mCache;private ListView mListView;public LvImageAdapter(ArrayList<String> arrayList , ArrayList<String> arrayList1, ArrayList<String> arrayList2,ArrayList<String> arrayList3,Context context, ListView listView) {this.mArrayList = arrayList;this.mArrayList1 = arrayList1;this.mArrayList2 = arrayList2;this.mArrayList3 = arrayList3;mContext = context;mHandler = new Handler();int maxSize = (int) (Runtime.getRuntime().maxMemory() / 1024);mCache = new LruCache<String, Bitmap>(maxSize / 2);mListView = listView; }@Overridepublic int getCount() {return mArrayList.size(); }@Overridepublic String getItem(int arg0) {return mArrayList.get(arg0); }@Overridepublic long getItemId(int arg0) {return arg0; }public int getCount1() {return mArrayList1.size(); }public String getItem1(int arg1) {return mArrayList1.get(arg1); }public long getItemId1(int arg1) {return arg1; }public int getCount2() {return mArrayList2.size(); }public String getItem2(int arg2) {return mArrayList2.get(arg2); }public long getItemId2(int arg2) {return arg2; }public int getCount3() {return mArrayList3.size(); }public String getItem3(int arg1) {return mArrayList3.get(arg1); }@Overridepublic View getView(int position, View convertView, ViewGroup arg2) { ViewHolder holder; convertView = View.inflate(mContext, R.layout.image_item, null); holder = new ViewHolder(); holder.imageView = (ImageView) convertView.findViewById(R.id.imageView); holder.textView1 = (TextView) convertView.findViewById(R.id.textView1); holder.textView2 = (TextView) convertView.findViewById(R.id.textView2); holder.textview00 = (TextView) convertView.findViewById(R.id.textview00); convertView.setTag(holder);if (convertView == null) { convertView = View.inflate(mContext, R.layout.image_item, null); holder = new ViewHolder(); holder.imageView = (ImageView) convertView.findViewById(R.id.imageView); holder.textView1 = (TextView) convertView.findViewById(R.id.textView1); holder.textView2 = (TextView) convertView.findViewById(R.id.textView2); holder.textview00 = (TextView) convertView.findViewById(R.id.textview00); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); }//download imageholder.imageView.setImageResource(R.mipmap.download); holder.imageView.setScaleType(ScaleType.FIT_XY); holder.textView1.setText(mArrayList1.get(position)); holder.textView2.setText(mArrayList2.get(position)); holder.textview00.setText(mArrayList3.get(position)); holder.textview00.setVisibility(View.GONE); Utils.loadImageFromUrl(mArrayList.get(position),mHandler, holder.imageView, mCache, mListView, position); Log.i("LvImageAdapter", position+"");return convertView; } static class ViewHolder{private ImageView imageView;private TextView textView1,textView2,textview00; }}
2、下载图片的类:
public class Utils {public static void loadImageFromUrl(final String url, final Handler handler, final ImageView imageView, final LruCache<String, Bitmap> lruCache, final ListView listView, final int position){if (lruCache.get(url) == null) {new Thread(new Runnable() {@Overridepublic void run() {final DefaultHttpClient client = new DefaultHttpClient();final HttpGet getRequest = new HttpGet(url); HttpResponse response = null;try { response = client.execute(getRequest); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }int statusCode = response.getStatusLine().getStatusCode();if (statusCode != HttpStatus.SC_OK) { Log.e("PicShow", "Request URL failed, error code =" + statusCode); } HttpEntity entity = response.getEntity();if (entity == null) { Log.e("PicShow", "HttpEntity is null"); } InputStream is = null; ByteArrayOutputStream baos = new ByteArrayOutputStream();try { is = entity.getContent();byte[] buf = new byte[1024];int readBytes = -1;while ((readBytes = is.read(buf)) != -1) { baos.write(buf, 0, readBytes); } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally {if (baos != null) {try { baos.close(); } catch (IOException e) { e.printStackTrace(); } }if (is != null) {try { is.close(); } catch (IOException e) { e.printStackTrace(); } } }byte[] imageArray = baos.toByteArray();final Bitmap bitmap = BitmapFactory.decodeByteArray( imageArray, 0, imageArray.length);handler.post(new Runnable() {@Overridepublic void run() {imageView.setImageBitmap(bitmap);lruCache.put(url, bitmap); } }); } }).start(); }else{ handler.post(new Runnable() {@Overridepublic void run() {imageView.setImageBitmap(lruCache.get(url));//listView.smoothScrollToPosition(position + 1);} }); } }public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {return; }int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }}
3、请求服务器,解析Json,得到数组,将数据加载到Listview中,传入的值包括三个显示的,还有一个不显示的:
Handlerhandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 0:mArrayList = new ArrayList<String>();mArrayList1 = new ArrayList<String>();mArrayList2 = new ArrayList<String>();mArrayList3 = new ArrayList<String>();try {final String status = jsonObject.getString("status");if ("true".equals(status)) {jsonArray = jsonObject.getJSONArray("results");for (int i = 0; i < jsonArray.length(); i++) {item1 = jsonArray.getJSONObject(i);title = item1.getString("title");info = item1.getString("info");imageurl = item1.getString("img");myid = item1.getInt("id");mArrayList.add(imageurl);mArrayList1.add(title);mArrayList2.add(info);mArrayList3.add(myid+""); } LvImageAdapter lvImageAdapter = newLvImageAdapter(mArrayList, mArrayList1, mArrayList2,mArrayList3, OperateActivity.this, main_operate_listview);main_operate_listview.setAdapter(lvImageAdapter);main_operate_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) { String str = mArrayList3.get(position); Intent intent = new Intent(); intent.putExtra("ArticleNum", str); intent.setClass(OperateActivity.this, Article.class); startActivity(intent); } }); } else { } } catch (JSONException e) { e.printStackTrace(); }break;default:break; } }};private class OperateThread implements Runnable {@Overridepublic void run() {path = path_url + 1 + "/aa/" + count;responseMsg = JsonUtil.loginServer(path); Message msg = handler.obtainMessage();try {jsonObject = new JSONObject(responseMsg); } catch (JSONException e) { e.printStackTrace(); } msg.what = 0;handler.sendMessage(msg); }}
0 1
- Listview加载网络数据、图片并跳转传值
- Android ListView加载网络数据和图片
- ListView加载网络数据和图片
- ListView加载网络数据和图片
- ListView加载网络数据和图片
- 图片轮播并加载网络数据
- 网络连接取数据,并加载到ListView的实现
- 使用ListView加载网络图片
- listview 异步加载 网络图片
- 使用glide图片加载框架将网络图片展示并在listview中
- ListView异步加载网络数据
- ListView异步加载网络数据
- ListView 分页加载网络数据
- 网络加载数据到ListView
- 一步一步实现ListView加载网络数据,下滑底部加载,顶部下拉刷新。并配有双缓存
- 使用异步任务加载网络上json数据并加载到ListView中
- Android异步加载学习笔记之二:实现ListView中的图片数据从网络加载
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- pyenv python多版本共存
- git
- Mongodb VS Hbase
- CSS3 3D transform 秒懂
- 配置samba服务器
- Listview加载网络数据、图片并跳转传值
- java正则表达式纪录
- 线段树 FZU 2201 序列操作
- CSS你可能还不知道的一些知识点
- SAP接口编程-RFC系列03 : RFC调用SAP函数
- MYSQL 操作入门
- 从17到same:UGC社区的利益激励机制
- phantomjs 的安装和使用
- HDU 1561 The more, The Better(树形DP入门)