第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

正在回答

3 回答

package com.example.news;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;


import android.os.AsyncTask;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.widget.ListView;

import java.net.URL;


import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

public class MainActivity extends Activity {


private ListView mListView;

private static String URL = "http://idcbgp.cn/api/teacher?type=4&num=30";


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mListView = (ListView) findViewById(R.id.lv_main);

// new NewsAsyncTask().execute(URL);

}

/**

?* 將URL對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成我們封裝的NewsBean;

?* @param url

?* @return

?*/

private List<NewsBean> getJsonData(String url) {

? ? ? ?List<NewsBean> NewsBeanList = new ArrayList<NewsBean>();

? ? ? ?try {

? ? ? ? ? ?String JsonString = readStream(new URL(url).openStream());

? ? ? ? ? ?// ?Log.d("xys", JsonString);

? ? ? ? ? ?JSONObject jsonObject ;

? ? ? ? ? ?NewsBean newsBean;

? ? ? ? ? ?try {

? ? ? ? ? ? jsonObject = new JSONObject(JsonString);

? ? ? ? ? ? JSONArray jsonArray = jsonObject.getJSONArray("data");

? ? ? ? ? ? for (int i=0; i<jsonArray.length() ; i++) {

? ? ? ? ? ? jsonObject = jsonArray.getJSONObject(i);

newsBean = new NewsBean();

newsBean.newsIconUrl = jsonObject.getString("picSmall");

newsBean.newsTitle = jsonObject.getString("name");

newsBean.newsContent = jsonObject.getString("description");

NewsBeanList.add(newsBean);

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} ??

? ? ? ? ? ?} catch (IOException e) {

? ? ? ? ? ?e.printStackTrace();

? ? ? ?}

? ? ? ?return NewsBeanList;

? ?}


private String readStream(InputStream is) {

InputStreamReader isr;

String result = "";


try {

String line = "";

isr = new InputStreamReader(is, "utf-8");

BufferedReader br = new BufferedReader(isr);

while ((line = br.readLine()) != null) {

result += line;

}

} catch (Exception e) {

e.printStackTrace();

}


return result;

}


class NewsAsyncTask extends AsyncTask<String, Void, List<NewsBean>> {


protected List<NewsBean> doInBackground(String... params) {

return getJsonData(params[0]);

}

@Override

protected void onPostExecute(List<NewsBean> newsBean) {

super.onPostExecute(newsBean);

NewsAdapter adapter = new NewsAdapter(MainActivity.this, newsBean,mListView);

mListView.setAdapter(adapter);

}

}


}



0 回復(fù) 有任何疑惑可以回復(fù)我~
package?com.example.news;

import?java.io.BufferedInputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.HttpURLConnection;
import?java.net.URL;
import?java.util.HashSet;
import?java.util.Set;

import?android.graphics.Bitmap;
import?android.graphics.BitmapFactory;
import?android.os.AsyncTask;
import?android.os.Handler;
import?android.os.Message;
import?android.support.v4.util.LruCache;
import?android.widget.ImageView;
import?android.widget.ListView;

public?class?ImageLoader?{

	private?String?mUrl;
	private?ImageView?mImageView;
	//?使用Lru,創(chuàng)建Cache;
	private?LruCache<String,?Bitmap>?mCaches;
	private?ListView?mListView;
	private?Set<NewsAsyncTask>?mTask;

	public?ImageLoader(ListView?listView)?{
		mListView?=?listView;
		mTask?=?new?HashSet<NewsAsyncTask>();
		//?獲取最大內(nèi)存
		int?maxMemory?=?(int)?Runtime.getRuntime().maxMemory();
		int?cacheSize?=?maxMemory?/?4;
		mCaches?=?new?LruCache<String,?Bitmap>(cacheSize)?{
			@Override
			protected?int?sizeOf(String?key,?Bitmap?value)?{
				//?在每次存入緩存的時(shí)候調(diào)用
				return?value.getByteCount();
			}
		};
	}

	/**
	?*?增加到緩存
	?*/
	public?void?addBitmapToCache(String?url,?Bitmap?bitmap)?{
		if?(getBitmapFromCache(url)?==?null)?{
			mCaches.put(url,?bitmap);
		}
	}

	/**
	?*?從緩存中獲取數(shù)據(jù)
	?*/
	public?Bitmap?getBitmapFromCache(String?url)?{
		return?mCaches.get(url);
	}

	private?Handler?handler?=?new?Handler()?{
		@Override
		public?void?handleMessage(Message?msg)?{
			super.handleMessage(msg);
			if?(mImageView.getTag().equals(mUrl))?{
				mImageView.setImageBitmap((Bitmap)?msg.obj);
			}

		}
	};

	public?void?showImageByThread(ImageView?imageView,?final?String?url)?{
		mUrl?=?url;
		mImageView?=?imageView;
		new?Thread()?{
			@Override
			public?void?run()?{
				super.run();
				Bitmap?bitmap?=?getBitmapFromUrl(url);
				Message?message?=?Message.obtain();
				message.obj?=?bitmap;
				handler.sendMessage(message);
			}
		}.start();
	}

	public?Bitmap?getBitmapFromUrl(String?urlString)?{
		Bitmap?bitmap;
		InputStream?is?=?null;
		try?{
			URL?url?=?new?URL(urlString);
			HttpURLConnection?conn?=?(HttpURLConnection)?url.openConnection();
			is?=?new?BufferedInputStream(conn.getInputStream());
			bitmap?=?BitmapFactory.decodeStream(is);
			conn.disconnect();
			//?Thread.sleep(1000);

			return?bitmap;
		}?catch?(Exception?e)?{
			e.printStackTrace();
		}?finally?{
			try?{
				is.close();
			}?catch?(IOException?e)?{
				e.printStackTrace();
			}
		}
		return?null;
	}

	/**
	?*?通過(guò)AsyncTask加載圖片
	?*/
	public?void?showImageByAsyncTask(ImageView?imageView,?String?url)?{
		Bitmap?bitmap?=?getBitmapFromCache(url);
		if?(bitmap?==?null)?{
			imageView.setImageResource(R.drawable.ic_launcher);
		}?else?{
			imageView.setImageBitmap(bitmap);
		}

	}

	public?void?loadImages(int?start,?int?end)?{
		for?(int?i?=?start;?i?<?end;?i++)?{
			String?url?=?NewsAdapter.URLS[i];
			Bitmap?bitmap?=?getBitmapFromCache(url);
			if?(bitmap?==?null)?{
				NewsAsyncTask?task?=?new?NewsAsyncTask(url);
				task.execute(url);
				mTask.add(task);
			}?else?{
				ImageView?imageView?=?(ImageView)?mListView
						.findViewWithTag(url);
				imageView.setImageBitmap(bitmap);
			}
		}
	}
		class?NewsAsyncTask?extends?AsyncTask<String,?Void,?Bitmap>?{
			private?String?mUrl;
			//private??ImageView?mImageView;
			public?NewsAsyncTask(String?url)?{
				//?mImageView?=?imageView;
				mUrl?=?url;
			}

			@Override
			protected?Bitmap?doInBackground(String...?params)?{
				String?url?=?params[0];
				//?從網(wǎng)絡(luò)下載圖片
				Bitmap?bitmap?=?getBitmapFromUrl(url);
				if?(bitmap?!=?null)?{
					//?將不在緩存的加入緩存
					addBitmapToCache(url,?bitmap);
				}
				return?bitmap;
			}

			@Override
			protected?void?onPostExecute(Bitmap?bitmap)?{
				super.onPostExecute(bitmap);
				//?if?(mImageView.getTag().equals(mUrl))?{
				//?mImageView.setImageBitmap(result);
				ImageView?imageView?=?(ImageView)?mListView
						.findViewWithTag(mUrl);
					if?(imageView!=null?&&?bitmap!=null)?{
						imageView.setImageBitmap(bitmap);
					}
					mTask.remove(this);
			}

		}
		public?void?cancleAllTasks()?{
			if?(mTask?!=null)?{
				for?(NewsAsyncTask?task?:?mTask)?{
					task.cancel(false);
				}
			}
		}
	
}


0 回復(fù) 有任何疑惑可以回復(fù)我~
package?com.example.news;

import?java.util.List;

import?android.content.Context;
import?android.view.LayoutInflater;
import?android.view.View;
import?android.view.ViewGroup;
import?android.widget.AbsListView;
import?android.widget.AbsListView.OnScrollListener;
import?android.widget.BaseAdapter;
import?android.widget.ImageView;
import?android.widget.ListView;
import?android.widget.TextView;

public?class?NewsAdapter?extends?BaseAdapter?implements?OnScrollListener{

	private?List<NewsBean>?mList;
	private?LayoutInflater?mInflater;
	private?ImageLoader?mImageLoader;
	private?int?mStart,mEnd;
	public??static?String[]?URLS;
	private?boolean?mFirstIn;
	public?NewsAdapter(Context?context,List<NewsBean>?data,ListView?listView)?{
		mList?=?data;
		mInflater?=?LayoutInflater.from(context);
		mImageLoader?=?new?ImageLoader(listView);
		URLS?=?new?String[data.size()];
		for?(int?i?=?0;?i?<?data.size();?i++)?{
			URLS[i]=data.get(i).newsIconUrl;
		}
		mFirstIn?=true;
		listView.setOnScrollListener(this);
	}
	@Override
	public?int?getCount()?{
		//?TODO?Auto-generated?method?stub
		return?mList.size();
	}

	@Override
	public?Object?getItem(int?position)?{
		//?TODO?Auto-generated?method?stub
		return?mList.get(position);
	}

	@Override
	public?long?getItemId(int?position)?{
		//?TODO?Auto-generated?method?stub
		return?position;
	}

	@Override
	public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{
		ViewHolder?holder=null;
		if?(convertView?==null)?{
			?holder?=?new?ViewHolder();
			convertView?=?mInflater.inflate(R.layout.item_layout,?null);
			holder.tvTitle?=?(TextView)?convertView.findViewById(R.id.tv_title);
			holder.tvContent=(TextView)?convertView.findViewById(R.id.tv_content);
			holder.ivIcon?=?(ImageView)?convertView.findViewById(R.id.iv_icon);
			?convertView.setTag(holder);
		}else{
			holder?=?(ViewHolder)?convertView.getTag();
		}
		String?url?=?mList.get(position).newsIconUrl;
		//holder.ivIcon.setImageResource(R.drawable.ic_launcher);
		holder.ivIcon.setTag(url);
		//new?ImageLoader().showImageByThread(holder.ivIcon,url);
		mImageLoader.showImageByAsyncTask(holder.ivIcon,url);
		holder.tvTitle.setText(mList.get(position).newsTitle);
		holder.tvContent.setText(mList.get(position).newsContent);
		return?convertView;
	}
	class?ViewHolder{
		public?TextView?tvTitle;
		public?TextView?tvContent;
		public?ImageView?ivIcon;
	}
	@Override
	public?void?onScrollStateChanged(AbsListView?view,?int?scrollState)?{
		if?(scrollState==SCROLL_STATE_IDLE)?{
			//加載可見(jiàn)項(xiàng)
			mImageLoader.loadImages(mStart,?mEnd);
		}else{
			//停止任務(wù)
			mImageLoader.cancleAllTasks();
		}
		
	}
	@Override
	public?void?onScroll(AbsListView?view,?int?firstVisibleItem,
			int?visibleItemCount,?int?totalItemCount)?{
		//?TODO?Auto-generated?method?stub
		mStart?=?firstVisibleItem;
		mEnd?=?firstVisibleItem+visibleItemCount;
		//第一次顯示時(shí)候調(diào)用
		if?(mFirstIn?&&?visibleItemCount>0)?{
			mImageLoader.loadImages(mStart,?mEnd);
			mFirstIn?=false;
		}
	}
}


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Android必學(xué)-異步加載
  • 參與學(xué)習(xí)       50617    人
  • 解答問(wèn)題       326    個(gè)

了解Android中的異步加載處理方法,這是面試問(wèn)的最多的知識(shí)點(diǎn)

進(jìn)入課程

源碼?。。。。。

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)