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

為了賬號安全,請及時綁定郵箱和手機立即綁定

進(jìn)入應(yīng)用,一片空白,什么也沒有顯示,請各位幫忙看看,謝謝!

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

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對應(yīng)的JSON格式數(shù)據(jù)轉(zhuǎn)化為我們所封裝的NewsBean
? ?private List<NewsBean> getJsonDate (String url) ?{
? ? ? ?List<NewsBean> newsBeanList=new ArrayList<NewsBean>();
? ? ? ?try {
? ? ? ? ? ?String jsonString=readStream(new URL(url).openStream());
? ? ? ? ? ?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) {
? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?}
? ? ? ?} catch (IOException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}

? ? ? ?return newsBeanList;
? ?}
? //通過is解析網(wǎng)頁返回的數(shù)據(jù)
? ?private String readStream(InputStream is) ?{
? ? ? ?InputStreamReader isr;
? ? ? ?String result="";
? ? ? ?try {
? ? ? ? ? ?String line="";
? ? ? ? ? ?isr =new InputStreamReader(is,"utf-8"); //字節(jié)流轉(zhuǎn)化為字符流
? ? ? ? ? ?BufferedReader br=new BufferedReader(isr);
? ? ? ? ? ?while((line=br.readLine())!=null){
? ? ? ? ? ? ? ?result+=line;
? ? ? ? ? ?}
? ? ? ?} catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}
? ? ? ?return result;
? ?}
? ?//實現(xiàn)網(wǎng)絡(luò)的異步訪問
? ?class NewsAsyncTask extends AsyncTask<String,Void,List<NewsBean>>{

? ? ? ?@Override
? ? ? ?protected List<NewsBean> doInBackground(String... params) {
? ? ? ? ? ?return getJsonDate(params[0]);
? ? ? ?}

? ? ? ?@Override
? ? ? ?protected void onPostExecute(List<NewsBean> newsBeans) {
? ? ? ? ? ?super.onPostExecute(newsBeans);
? ? ? ? ? ?NewsAdapter adapter=new NewsAdapter(MainActivity.this,newsBeans,mListView);
? ? ? ? ? ?mListView.setAdapter(adapter);
? ? ? ?}
? ?}
}


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

import java.util.List;

public class NewsAdapter extends BaseAdapter implements AbsListView.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;
? ? ? ?//一定要注冊對應(yīng)的事件
? ? ? ?listView.setOnScrollListener(this);
? ?}
? ?@Override
? ?public int getCount() {
? ? ? ?return mList.size();
? ?}

? ?@Override
? ?public Object getItem(int position) {
? ? ? ?return mList.get(position);
? ?}

? ?@Override
? ?public long getItemId(int position) {
? ? ? ?return position;
? ?}

? ?@Override
? ?public View getView(int position, View convertView, ViewGroup parent) {
? ? ? ?ViewHolder viewHolder=null;
? ? ? ?if (convertView == null) {
? ? ? ? ? ?viewHolder=new ViewHolder();
? ? ? ? ? ?convertView=mInflater.inflate(R.layout.item_layout,null);
? ? ? ? ? ?viewHolder.ivIcon= (ImageView) convertView.findViewById(R.id.iv_icon);
? ? ? ? ? ?viewHolder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title);
? ? ? ? ? ?viewHolder.tvContent= (TextView) convertView.findViewById(R.id.tv_content);
? ? ? ? ? ?convertView.setTag(viewHolder);

? ? ? ?}else{
? ? ? ? ? ?viewHolder= (ViewHolder) convertView.getTag();
? ? ? ?}
// ? ? ? ?viewHolder.ivIcon.setImageResource(R.mipmap.ic_launcher);
? ? ? ?String url=mList.get(position).newsIconUrl;
? ? ? ?viewHolder.ivIcon.setTag(url);
// ? ? ? new ImageLoader().showImageByThread(viewHolder.ivIcon,url);
? ? ? mImageLoader.showImageByAsyncTask(viewHolder.ivIcon,url);
? ? ? ?viewHolder.tvTitle.setText(mList.get(position).newsTitle);
? ? ? ?viewHolder.tvContent.setText(mList.get(position).newsContent);
? ? ? ?return convertView;
? ?}

? ?@Override
? ?public void onScrollStateChanged(AbsListView absListView, int scrollState) {
? ? ? ?if(scrollState==SCROLL_STATE_IDLE){
? ? ? ? ? ?//加載可見項
? ? ? ? ? ?mImageLoader.loadImages(mStart,mEnd);
? ? ? ?}else{
? ? ? ? ? ?//停止任務(wù)
? ? ? ? ? ?mImageLoader.cancelAllTasks();
? ? ? ?}
? ?}

? ?@Override
? ?public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
? ? ? ? mStart=firstVisibleItem;
? ? ? ?mEnd=firstVisibleItem+visibleItemCount;
? ? ? ?//第一次顯示的時候調(diào)用
? ? ? ?if (mFirstIn&&visibleItemCount>0){
? ? ? ? ? ?mImageLoader.loadImages(mStart,mEnd);
? ? ? ? ? ?mFirstIn=false;
? ? ? ?}
? ?}


? ?class ViewHolder{
? ? ? ?public TextView tvTitle,tvContent;
? ? ? ?public ImageView ivIcon;
? ?}
}


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

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;


public class ImageLoader{
? ?private ImageView mImageView;
? ?private String mUrl;
? ?//創(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 cachSize=maxMemory/4;
? ? ? ?mCaches=new LruCache<String,Bitmap>(cachSize){
? ? ? ? ? ?@Override
? ? ? ? ? ?protected int sizeOf(String key, Bitmap value) {
? ? ? ? ? ? ? ?//在每次存入緩存的時候調(diào)用
? ? ? ? ? ? ? ?return value.getByteCount();
? ? ? ? ? ?}

? ? ? ?};
? ?}
? ?//增加到緩存
? ?public void addBitmapToCaChe(String url,Bitmap bitmap){
? ? ? ?if(getBitmapFromURL(url)==null){
? ? ? ? ? ?mCaches.put(url,bitmap);
? ? ? ?}
? ?}
? ?//從緩存中獲取數(shù)據(jù)
? ?public Bitmap getBitmapFromCaChe(String url){

? ? ? ?return mCaches.get(url);
? ?}
? ?private Handler mHandler=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){
? ? ? ?mImageView=imageView;
? ? ? ?mUrl=url;
? ? ? ?new Thread(){
? ? ? ? ? ?@Override
? ? ? ? ? ?public void run() {

? ? ? ? ? ? ? ?super.run();
? ? ? ? ? ? ? ?Bitmap bitmap=getBitmapFromURL(url);
? ? ? ? ? ? ? ?Message message=Message.obtain();
? ? ? ? ? ? ? ?message.obj=bitmap;
? ? ? ? ? ? ? ?mHandler.sendMessage(message);
? ? ? ? ? ?}
? ? ? ?}.start();
? ?}
? ?public Bitmap getBitmapFromURL(String urlString) ?{
? ? ? ?Bitmap bitmap;
? ? ? ?InputStream is = null;
? ? ? ?try {
? ? ? ? ? ?URL url=new URL(urlString);
? ? ? ? ? ?HttpURLConnection connection= (HttpURLConnection) url.openConnection();
? ? ? ? ? ?is =new BufferedInputStream(connection.getInputStream());
? ? ? ? ? ?bitmap= BitmapFactory.decodeStream(is);
? ? ? ? ? ?connection.disconnect();
? ? ? ? ? ?return bitmap;
? ? ? ?} catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}finally {
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?is.close();
? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?return null;
? ?}
? ?public ?void showImageByAsyncTask(ImageView imageView,String url){
? ? ? ?//從緩存中取出對應(yīng)的圖片
? ? ? ?Bitmap bitmap=getBitmapFromCaChe(url);
? ? ? ?//如果緩存中沒有,那么必須去下載
? ? ? ?if (bitmap==null){
? ? ? ? ? ?imageView.setImageResource(R.mipmap.ic_launcher);
? ? ? ?}else{
? ? ? ? ? ?imageView.setImageBitmap(bitmap);
? ? ? ?}
? ?}
? ?public void cancelAllTasks(){
? ? ? ?if (mTask!=null)
? ? ? ?{
? ? ? ? ? ?for (NewsAsyncTask task:mTask) {
? ? ? ? ? ? ? ?task.cancel(false);
? ? ? ? ? ?}
? ? ? ?}
? ?}
? ?//用來加載從start到end的所有圖片
? ?public ?void loadImages(int start,int end){
? ? ? ?for (int i = start; i < end; i++) {
? ? ? ? ? ?String url=NewsAdapter.URLS[i];
? ? ? ? ? ?//從緩存中取出對應(yīng)的圖片
? ? ? ? ? ?Bitmap bitmap=getBitmapFromURL(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);
? ? ? ? ? ?}
? ? ? ?}
? ?}
? ?private class NewsAsyncTask extends AsyncTask<String,Void,Bitmap>{
? ?// ? ?private ImageView mImageView;
? ? ? ?private String mUrl;
? ? ? ?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);
? ? ? ? ? ?ImageView imageView= (ImageView) mListView.findViewWithTag(mUrl);
? ? ? ? ? ?if (imageView!=null&&bitmap!=null){
? ? ? ? ? ? ? ?imageView.setImageBitmap(bitmap);
? ? ? ? ? ?}
? ? ? ? ? ?mTask.remove(this);
? ? ? ?}
? ?}
}






正在回答

1 回答

自己已經(jīng)搞定了。

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

舉報

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

了解Android中的異步加載處理方法,這是面試問的最多的知識點

進(jìn)入課程

進(jìn)入應(yīng)用,一片空白,什么也沒有顯示,請各位幫忙看看,謝謝!

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

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

幫助反饋 APP下載

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

公眾號

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