@Senl
2017-04-28T19:39:09.000000Z
字数 6462
阅读 1321
技术学习
public class MainActivity extends AppCompatActivity implements View.OnClickListener{TextView responseText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button sendRequest = (Button) findViewById(R.id.mainActivity_btn_sendRequest);responseText = (TextView) findViewById(R.id.mainActivity_tv_setUi);sendRequest.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.mainActivity_btn_sendRequest) {sendRequestWithHttpURLConnection();}}private void sendRequestWithHttpURLConnection() {// 开启线程来发起网络请求new Thread(new Runnable() {@Overridepublic void run() {HttpURLConnection connection = null;BufferedReader reader = null;try {URL url = new URL("http://news-at.zhihu.com/api/4/themes");connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(8000);connection.setReadTimeout(8000);InputStream in = connection.getInputStream();// 下面对获取到的输入流进行读取reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}showResponse(response.toString());parseJSONObject(response.toString());} catch (Exception e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}if (connection != null) {connection.disconnect();}}}}).start();}private void showResponse(final String response) {runOnUiThread(new Runnable() {@Overridepublic void run() {// 在这里进行UI操作,将结果显示到界面上responseText.setText(response);}});}private void parseJSONObject(String jsonData) {try {JSONObject jsonObjectData = new JSONObject(jsonData);JSONArray jsonArray = jsonObjectData.getJSONArray("others");for (int i = 0; i<jsonArray.length(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);String description = jsonObject.getString("description");Log.d("MainActivity",description);}} catch (JSONException e) {e.printStackTrace();}}}


public class MainActivity extends AppCompatActivity implements View.OnClickListener {private TextView responseText;private List<NewsChannel> list = new ArrayList<NewsChannel>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);responseText = (TextView) findViewById(R.id.mainActivity_tv_setUi);Button sendRequest = (Button) findViewById(R.id.btn);sendRequest.setOnClickListener(this);Button btn = (Button) findViewById(R.id.btn1);btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btn) {sendRequestWithHttpURLConnection();}if (v.getId() == R.id.btn1) {Intent intent = new Intent(MainActivity.this,SecondActivity.class);ArrayList<String> nameList = new ArrayList<>();HashMap<String,String> map = new HashMap<String, String>();for (NewsChannel channel : list ){nameList.add(channel.mName);map.put(channel.mName,channel.mDescription);}ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>();list.add(0,map);intent.putExtra("name", nameList);intent.putExtra("map",list);startActivity(intent);}}private void sendRequestWithHttpURLConnection() {// 开启线程来发起网络请求new Thread(new Runnable() {@Overridepublic void run() {HttpURLConnection connection = null;BufferedReader reader = null;try {URL url = new URL("http://news-at.zhihu.com/api/4/themes");connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(8000);connection.setReadTimeout(8000);InputStream in = connection.getInputStream();// 下面对获取到的输入流进行读取reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}showResponse(response.toString());parseJSONObject(response.toString());} catch (Exception e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}if (connection != null) {connection.disconnect();}}}}).start();}private void showResponse(final String response) {runOnUiThread(new Runnable() {@Overridepublic void run() {// 在这里进行UI操作,将结果显示到界面上responseText.setText(response);}});}private void parseJSONObject(String jsonData) {/** others: 新闻类型列表thumbnail : 供显示的图片地址description : 主题日报的介绍id: 新闻类型的唯一表示, 可用于获取该类型下的新闻列表name: 新闻类型的名字*/try {JSONObject jsonObjectData = new JSONObject(jsonData);JSONArray jsonArray = jsonObjectData.getJSONArray("others");NewsChannel newsChannel;for (int i = 0; i < jsonArray.length(); i++) {Parcel parcel = Parcel.obtain();newsChannel = new NewsChannel();JSONObject jsonObject = jsonArray.getJSONObject(i);String description = jsonObject.getString("description");String name = jsonObject.getString("name");newsChannel.mDescription = description;newsChannel.mName = name;list.add(newsChannel);parcel.recycle();}} catch (JSONException e) {e.printStackTrace();}}}
public class SecondActivity extends AppCompatActivity {private Spinner mSpinnerSelect;private SimpleAdapter mSimpleAdapter;private List<NewsChannel> mList = new ArrayList<NewsChannel>();HashMap<String,String> map;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Intent intent = getIntent();ArrayList<String> nameList = intent.getStringArrayListExtra("name");ArrayList<HashMap<String,String>> list = (ArrayList<HashMap<String, String>>) intent.getSerializableExtra("map");map = list.get(0);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, nameList);adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);Spinner sp = (Spinner) findViewById(R.id.spinner);sp.setAdapter(adapter);sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {// parent: 为控件Spinner view:显示文字的TextView position:下拉选项的位置从0开始public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {TextView tvResult = (TextView) findViewById(R.id.tvResult);//获取Spinner控件的适配器ArrayAdapter<String> adapter = (ArrayAdapter<String>) parent.getAdapter();tvResult.setText(map.get(adapter.getItem(position)));}//没有选中时的处理public void onNothingSelected(AdapterView<?> parent) {}});}}


