上方点评头条,每过3秒钟切换一条及下方列表解析

本文详细介绍了一个基于Android平台的应用开发过程,包括UI布局设计、异步任务处理、JSON解析及ListView适配等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局:::

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

   <!-- <include layout="@layout/layout"/>-->

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:text="点击头条"
            android:textSize="20sp"
            android:textColor="#FF6633"
            android:textStyle="bold"
            android:layout_marginLeft="13dp"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:text="▏"
            android:layout_gravity="center_vertical"/>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <ImageView
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:id="@+id/main_image"
                android:src="@mipmap/ic_launcher"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="阿萨德"
                android:id="@+id/main_title"
                android:textSize="20sp"
                android:layout_toRightOf="@id/main_image"
                android:layout_marginLeft="20dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=">"
                android:layout_alignParentRight="true"
                android:layout_marginRight="10dp"
                android:layout_centerVertical="true"
                android:textSize="30sp"
                />
        </RelativeLayout>

    </LinearLayout>



    <ListView
        android:layout_width="match_parent"
        android:layout_marginTop="40dp"
        android:layout_height="match_parent"
        android:id="@+id/lv"></ListView>
</LinearLayout>


MainActivity:
package com.example.com.zuoye129;

import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.com.zuoye129.R;
import com.google.gson.Gson;

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.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ImageView main_image;
    private TextView main_title;
    private List<String> datas= new ArrayList<>();//鍒涘缓闆嗗悎瀛樻斁鏁版嵁
    private int index = 0;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {

            main_title.setText(datas.get(index%datas.size()));

            index ++;

            handler.sendEmptyMessageDelayed(1,3000);
        }
    };
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //鑾峰彇鎺т欢
        main_image = findViewById(R.id.main_image);
        main_title = findViewById(R.id.main_title);
        lv = findViewById(R.id.lv);
        mytask mytask = new mytask();
        mytask.execute();
        
        new Thread(){
            @Override
            public void run() {
                try {
                    //杩涜璁块棶鏁版嵁
                    URL url = new URL("http://api.tianapi.com/huabian/?key=93793d7dd4b2aa34c971977af330e6c1&num=10");
                    //鎵撳紑杩炴帴
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    //杩涜璁剧疆
                    urlConnection.setRequestMethod("GET");//璁剧疆缃戠粶璇锋眰鏂瑰紡
                    urlConnection.setReadTimeout(5000);//璁剧疆璇诲彇瓒呮椂鏃堕棿
                    urlConnection.setConnectTimeout(5000);//璁剧疆鏈嶅姟鍣ㄨ秴鏃舵椂闂?
                    //鍒ゆ柇缁撴灉鐮?
                    //Log.d("--", urlConnection.getResponseCode()+"run");
                    if(urlConnection.getResponseCode() == 200){
                        //鑾峰彇鏁版嵁
                        InputStream inputStream = urlConnection.getInputStream();
                        //杩涜璇诲彇鏂规硶
                        String s = ToStringData(inputStream);
                        //杩涜瑙f瀽
                        Json(s);

                        handler.sendEmptyMessage(1);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }.start();

    }

    //瀹氫箟璇诲彇鏁版嵁鐨勬柟娉?
    public String ToStringData(InputStream inputStream){
        StringBuilder builder = new StringBuilder();
        try {
            //鍒涘缓甯︾紦鍐插尯鐨勮鍙栨祦
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
            String str = "";
            while((str = reader.readLine()) != null){
                builder.append(str);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return builder.toString();
    }

    //瑙f瀽鏁版嵁鐨勬柟娉?
    public void Json(String str){
        try {
            //鑾峰彇绗竴灞傜殑鏁扮粍缁撴瀯
            JSONObject jsonObject = new JSONObject(str);
            JSONArray newslist = jsonObject.getJSONArray("newslist");
            //寰幆閬嶅巻
            for (int i = 0; i < newslist.length(); i++) {
                datas.add(newslist.getJSONObject(i).getString("title"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    class mytask extends AsyncTask<String,Void,String>{

        @Override
        protected String doInBackground(String... strings) {

            try {
                URL url = new URL("http://api.tianapi.com/huabian/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10");
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.setReadTimeout(5000);
                urlConnection.setConnectTimeout(5000);
                if (urlConnection.getResponseCode()==200) {
                    InputStream inputStream = urlConnection.getInputStream();
                    return steamstring(inputStream);

                }
                } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            Gson gson = new Gson();
            DatasBean datasBean = gson.fromJson(s, DatasBean.class);
            List<DatasBean.NewslistBean> newslist = datasBean.getNewslist();
            MyAdapter myAdapter = new MyAdapter(MainActivity.this, newslist);
            lv.setAdapter(myAdapter);
        }
    }
    public String steamstring(InputStream inputStream ) {
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String str;
        try {
            while((str=reader.readLine())!=null) {
                builder.append(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  builder.toString();
    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值