public class MainActivity extends AppCompatActivity {
private ListView listView;
private NewsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list);
adapter = new NewsAdapter(this);
listView.setAdapter(adapter);
findViewById(R.id.urlconnection).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if (!hasActiviteNetwork()) {
Toast.makeText(MainActivity.this, "没有可用的网络", Toast.LENGTH_LONG).show();
startActivity(new Intent(Settings.ACTION_SETTINGS));
return;
}
new Thread(new Runnable() {
@Override public void run() {
requestData(
"http://www.xieast.com/api/news/news.php?type=top&page=1&tdsourcetag=s_pcqq_aiomsg");
}
}).start();
}
});
}
private boolean hasActiviteNetwork() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable();
}
private Handler handler = new Handler(new Handler.Callback() {
@Override public boolean handleMessage(Message msg) {
//datas.addAll((List<NewsRespond.NewsItem>) msg.obj);
adapter.setDatas((List<NewsRespond.NewsItem>) msg.obj);
//adapter.notifyDataSetChanged();
return true;
}
});
private void requestData(String urlString) {
try {
//1 地址
URL url = new URL(urlString);
//2 打开连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
//请求方法 超时
httpURLConnection.setRequestMethod("GET");
//连接超时
httpURLConnection.setConnectTimeout(5000);
//读取超时
httpURLConnection.setReadTimeout(5000);
//请求状态
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == 200) {
//读取流
String result = stream2String(httpURLConnection.getInputStream());
NewsRespond respond = new Gson().fromJson(result, NewsRespond.class);
//更新 ui
handler.sendMessage(handler.obtainMessage(0, respond.data));
}
//关闭
httpURLConnection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//将返回数据流转换成string
private String stream2String(InputStream is) {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
try {
for (String tmp = reader.readLine(); tmp != null; tmp = reader.readLine()) {
sb.append(tmp);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/*class NewsAdapter extends BaseAdapter {
@Override public int getCount() {
return datas.size();
}
@Override public NewsRespond.NewsItem getItem(int position) {
return datas.get(position);
}
@Override public long getItemId(int position) {
return position;
}
@Override public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if (convertView != null) {
vh = (ViewHolder) convertView.getTag();
} else {
vh = new ViewHolder();
convertView = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_news, null);// listView, false
// id 2 view
vh.title = convertView.findViewById(R.id.title);
vh.date = convertView.findViewById(R.id.time);
convertView.setTag(vh);
}
//数据
NewsRespond.NewsItem newsItem = datas.get(position);
vh.title.setText(newsItem.getTitle());
vh.date.setText(newsItem.getDate());
return convertView;
}
class ViewHolder {
public TextView title;
public TextView date;
}
}*/
}
因篇幅问题不能全部显示,请点此查看更多更全内容