加载数据到ListView

来源:互联网 发布:雅马哈合成器 知乎 编辑:程序博客网 时间:2024/06/05 17:24

RequestDataActivity.java

package com.studio.listviewproject.listview;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.widget.ListView;import com.studio.listviewproject.R;import com.studio.listviewproject.adapter.RequestDataAdapter;import com.studio.listviewproject.model.LessonInfo;import com.studio.listviewproject.model.LessonResult;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;public class RequestDataActivity extends AppCompatActivity {    private ListView mListView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (ListView) findViewById(R.id.main_list_view);        LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);        View footerView = layoutInflater.inflate(R.layout.header_list_view, null);        mListView.addFooterView(footerView);        //List<data>   item.view        new RequestDataAsyncTask().execute();    }    public class RequestDataAsyncTask extends AsyncTask<Void, Void, String> {        static final String STATUS = "status";        static final String DATA = "data";        static final String NAME = "name";        public static final String REQUEST_DATA_URL = "http://www.imooc.com/api/teacher?type=2&page=1";        @Override        protected void onPreExecute() {            super.onPreExecute();            //Loading        }        @Override        protected String doInBackground(Void... voids) {            return request(REQUEST_DATA_URL);        }        private String request(String urlString) {            try {                URL url = new URL(urlString);                HttpURLConnection connection = (HttpURLConnection) url.openConnection();                connection.setConnectTimeout(30000);                connection.setRequestMethod("GET");                connection.connect();                int responseCode = connection.getResponseCode();                if (responseCode == HttpURLConnection.HTTP_OK) {                    InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream());                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);                    StringBuilder stringBuilder = new StringBuilder();                    String line;                    while ((line = bufferedReader.readLine()) != null) {                        stringBuilder.append(line);                    }                    return stringBuilder.toString();                }            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String result) {            super.onPostExecute(result);            //Loading 消失,数据处理 刷新界面            LessonResult lessonResult = new LessonResult();            try {                JSONObject jsonObject = new JSONObject(result);                final int status = jsonObject.getInt(STATUS);                lessonResult.setmStatus(status);                final String msg = jsonObject.getString("msg");                lessonResult.setmMessage(msg);                List<LessonInfo> lessonInfos = new ArrayList<>();                JSONArray dataArray = jsonObject.getJSONArray(DATA);                for (int index = 0; index < dataArray.length(); index++) {                    LessonInfo lessonInfo = new LessonInfo();                    JSONObject tempJSONObject = (JSONObject) dataArray.get(index);                    final String name = tempJSONObject.getString(NAME);                    lessonInfo.setmName(name);                    lessonInfos.add(lessonInfo);                }                lessonResult.setmLessonInfoList(lessonInfos);                //GSON FastJson            } catch (JSONException e) {                e.printStackTrace();            }            mListView.setAdapter(new RequestDataAdapter(RequestDataActivity.this, lessonResult.getmLessonInfoList()));        }    }}

RequestDataAdapter.java

package com.studio.listviewproject.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.studio.listviewproject.R;import com.studio.listviewproject.model.LessonInfo;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/8/31. */public class RequestDataAdapter extends BaseAdapter {    private List<LessonInfo> mLessonInfos = new ArrayList<>();    private Context mContext;    public RequestDataAdapter(Context context, List<LessonInfo> infos) {        mLessonInfos = infos;        mContext = context;    }    @Override    public int getCount() {        return mLessonInfos.size();    }    @Override    public Object getItem(int i) {        return mLessonInfos.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder viewHolder = new ViewHolder();        if (view == null) {            LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);            view = layoutInflater.inflate(R.layout.item_app_list_view, null);            viewHolder.mAppIconImageView = view.findViewById(R.id.app_icon_image_view);            viewHolder.mAppNameTextView = view.findViewById(R.id.app_name_text_view);            view.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) view.getTag();        }        viewHolder.mAppNameTextView.setText(mLessonInfos.get(i).getmName());        viewHolder.mAppIconImageView.setVisibility(View.GONE);        return view;    }    class ViewHolder {        public ImageView mAppIconImageView;        public TextView mAppNameTextView;    }}

阅读全文
0 0
原创粉丝点击