评头条,每过3秒钟切换一条,下方展示一个列表,其中,点评头条使用HttpUrlConnection+Handler
要先解析出来数据加到集合中,之后handelr发送一个空消息,判断集合是否为空,因为连接网络需要时间,因无限轮播,所以赋值的时候要魔除.
int a=0; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(arraylist!=null){ //赋值 tv.setText(arraylist.get(a%arraylist.size())); a++; } } };
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); tv = (TextView) findViewById(R.id.tv); //开启AsyncTask,连接网络获取数据 AsyncTask<String, Void, String> execute = new MAsyncTask().execute(surl); } private class MAsyncTask extends AsyncTask<String,Void,String> { //这是子线程 @Override protected String doInBackground(String... strings) { final String url = strings[0]; //直接用工具类获取json String tostr = Netutil.getNetJson(url); //返回给(前台方法,主线程方法onPostExecute) return tostr; } //这个是主线程 @Override protected void onPostExecute(String s) { super.onPostExecute(s); try { JSONArray ja=new JSONArray(s); for(int i=0;i<ja.length();i++){ arraylist.add(ja.getString(i)); } Timer t=new Timer(); t.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); } },0,3000); } catch (JSONException e) { e.printStackTrace(); } } }