123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.example.myapplication;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.TextView;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.*;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- public class MainActivity extends AppCompatActivity {
- private ListView mListView;
- private static String URL = "http://news.6liu.top/news";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //默认加载的页面
- setContentView(R.layout.activity_main);
- mListView = (ListView) findViewById(R.id.new_main);
- //点击事件
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- //获得保存网址的隐藏对象
- TextView content= (TextView) view.findViewById(R.id.new_content);
- //传递的activity
- Intent intent = new Intent(MainActivity.this, NewsActivity.class);
- //保存参数
- intent.putExtra("content_url", content.getText().toString());
- //向下传值
- startActivity(intent);
- }
- });
- //发起URL请求
- new NewsAsyncTask().execute(URL);
- }
- /**
- * 实现网络的异步访问
- */
- class NewsAsyncTask extends AsyncTask<String, Void, List<NewBean>>{
- @Override
- protected List<NewBean> doInBackground(String... strings) {
- return getJsonData(strings[0]);
- }
- @Override
- protected void onPostExecute(List<NewBean> newBeans) {
- super.onPostExecute(newBeans);
- NewsAdapter adapter = new NewsAdapter(MainActivity.this, newBeans, mListView);
- mListView.setAdapter(adapter);
- }
- }
- /**
- * 将获取到的json数据转化为NewBean对象
- * @param url
- * @return
- */
- private List<NewBean> getJsonData(String url) {
- List<NewBean> newsBeanList = new ArrayList<>();
- try {
- String jsonString = readStream(new URL(url).openStream());
- NewBean newBean;
- //解析Json数据
- JSONObject jsonObject;
- try{
- jsonObject = new JSONObject(jsonString);
- JSONArray jsonArray = jsonObject.getJSONArray("data");
- for (int i=0; i<jsonArray.length(); i++){
- jsonObject = jsonArray.getJSONObject(i);
- newBean = new NewBean();
- newBean.setId(jsonObject.getString("id"));
- newBean.setTitle(jsonObject.getString("title"));
- newBean.setDesc(jsonObject.getString("desc"));
- newBean.setTime(jsonObject.getString("time"));
- newBean.setContentUrl(jsonObject.getString("content_url"));
- newBean.setPicUrl(jsonObject.getString("pic_url"));
- newsBeanList.add(newBean);
- }
- }catch (JSONException e){
- e.printStackTrace();
- }
- } catch (IOException e){
- e.printStackTrace();
- }
- return newsBeanList;
- }
- /**
- * 用is解析网页返回的数据
- * @param is
- * @return
- */
- 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 (UnsupportedEncodingException e){
- e.printStackTrace();
- }catch (IOException e){
- e.printStackTrace();
- }
- return result;
- }
- }
|