网络请求三个功能实现跳转

1) 封装HttpUrlConnection网络请求工具类,进入页面时开启新线程,使用HttpUrlConnection进行网络请求,加载网络数据并解析,通过Handler更新UI。

public class MainActivity extends AppCompatActivity {
    private ListView list_view;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                String json = (String) msg.obj;
                Gson gson = new Gson();
                newsbean newsbean = gson.fromJson(json, newsbean.class);
                List<com.example.bean.newsbean.DataBean> data = newsbean.getData();
                myadapter myadapter = new myadapter(MainActivity.this, data);
                list_view.setAdapter(myadapter);
                list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        Intent intent = new Intent(MainActivity.this, Second.class);
                        startActivity(intent);
                        finish();
                    }
                });
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //解析
        list_view = findViewById(R.id.list_view);
        getservices();
    }
    private void getservices() {
        new Thread(){
            @Override
            public void run() {
                super.run();
                String path="http://www.xieast.com/api/news/news.php?page=1";
                try {
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    connection.setRequestMethod("GET");
                    if(connection.getResponseCode()==200){
                        InputStream inputStream = connection.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] bytes = new byte[1024];
                        int len =0;
                        while((len=inputStream.read(bytes))!=-1){
                            bos.write(bytes,0,len);
                        }
                        inputStream.close();
                        bos.close();
                        String json = bos.toString();
                        Message message = new Message();
                        message.what=0;
                        message.obj=json;
                        Log.i("xxx",json);
                        handler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            }.start();
        }
    }

2) 添加条目点击事件,当点击列表条目时,跳转到第二个页面,显示效果和第一个页面相同,封装HttpClient网络请求工具类,第二个页面使用AsyncTask和HttpClient完成网络请求并更新UI

public class Second extends AppCompatActivity {
    private ListView list_view1;
    String url="http://www.xieast.com/api/news/news.php?page=2";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        list_view1 = findViewById(R.id.list_view1);
        //异步解析
        Myasync myasync = new Myasync();
        myasync.execute(url);
    }
     public class Myasync extends AsyncTask<String,Integer,String>{
         @Override
         protected String doInBackground(String... params) {
             DefaultHttpClient client = new DefaultHttpClient();
             String path =params[0];
             HttpGet get = new HttpGet(path);
             try {
                 HttpResponse response = client.execute(get);
                 if(response.getStatusLine().getStatusCode()==200){
                     //从服务器获取输入流
                     InputStream inputStream = response.getEntity().getContent();
                     ByteArrayOutputStream bos = new ByteArrayOutputStream();
                     byte[] buffer = new byte[1024];
                     int len = 0;
                     while ((len = inputStream.read(buffer)) != -1) {
                         bos.write(buffer, 0, len);
                     }
                     inputStream.close();
                     bos.close();
                     String json = bos.toString();
                     return json;
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
             return null;
         }
         @Override
         protected void onPostExecute(String s) {
             super.onPostExecute(s);
             Gson gson = new Gson();
             news1bean news1bean = gson.fromJson(s, news1bean.class);
             final List<com.example.bean.news1bean.DataBean> data =  news1bean.getData();
             my1adapter my1adapter = new my1adapter(Second.this,data);
             list_view1.setAdapter(my1adapter);
             list_view1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                     Toast.makeText(Second.this,data.get(i).getUrl(),0).show();
                     Intent intent = new Intent(Second.this, Three.class);
                     intent.putExtra("url", data.get(i).getUrl());
                     startActivity(intent);
                     finish();
                 }
             });
         }
     }
}

3) 当点击第二个页面的条目时,跳转到详情页并将url传递过去,使用WebView加载出详情

public class Three extends AppCompatActivity {
    private WebView webview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_three);
        Intent intent = getIntent();
        webview = findViewById(R.id.webview);
        webview.loadUrl(intent.getStringExtra("url"));
    }
}

猜你喜欢

转载自blog.csdn.net/QQ849410011/article/details/80964700
今日推荐