此範例為ListView的實作範例,結果如下圖顯示,
圖片下方ListView為顯示的List內容,(從Button,Edit,等....)
當選擇list Item時,會觸發 OnItemClickListener 的 onItemClick,
透過onItemClick內所實作的Intent將畫面轉到對應的Activity頁面顯示。
package com.test.test1; import android.support.v7.app.ActionBarActivity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends ActionBarActivity { private static final int SHOW_EDITOR = 0; //(1) list 顯示文字&對應的class private Object[] listViewData = { "Button", ButtonActivity.class, "Edit",EditActivity.class, "Clock", ClockActivity.class, "Progress",ProgressActivity.class, "Date/Time Picker日期與時間", DateActivity.class, "Chronometer計時跑表", ChronometerActivity.class, "Popup警示對話",PopupActivity.class, "SpinnerSelect下拉選單", SpinnerActivity.class, "GridView", GridViewActivity.class, "Video", VideoActivity.class, "Gallery藝廊", GalleryActivity.class, "Misc數值變更", MiscActivity.class, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this, "onCreate text", Toast.LENGTH_LONG).show(); //(2)list顯示文字部分處理「偶數部分為顯示文字」放到CharSequence[] 中 CharSequence[] list = new CharSequence[listViewData.length / 2]; for (int i = 0; i < list.length; i++) { list[i] = (String) listViewData[i * 2]; } //(3)建立ArrayAdapter將剛剛處利好的list資料放入 //android.R.layout.simple_list_item_1為選擇的樣式「此樣式為android提供樣式」 ArrayAdapter adapter = new ArrayAdapter( this, android.R.layout.simple_list_item_1, list); //(4)將顯示畫面上的list與Activity串聯 ListView list1 = (ListView) findViewById(R.id.listView1); //ListView的使用需要搭配Adapter,Adapter是用來連接資料和ListView的, //Adapter除了會用到ListView中,另外會用到還有Spinner(類似下拉選單)的這個元件中。 //(5)透過ListView的setAdapter()方法,將串聯資料的Adapter與ListView串聯起來。 list1.setAdapter(adapter); //(6)實作點選清單後轉換到各自的Activity範例畫面 //ListView上設定OnItemClickListener //按下選單名稱指向相關的應用程式Class list1.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Intent 指定轉向的Activity頁面,class取的是listViewData單數部分Class Intent intent = new Intent (MainActivity.this, (Class<?>)listViewData[position * 2 + 1]); startActivity(intent); } }); //=====Button實作====== Button button = (Button) findViewById(R.id.buttonRTMain); // 實作 Main button轉換到chat Activity功能 // 用button.setOnClickListener 來指定 OnClickListener() 來接收 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // Intent 設定要切換到哪個Activity Intent intent = new Intent(MainActivity.this, ChatActivity.class); EditText edtext = (EditText) findViewById(R.id.editTextRTMain); CharSequence text = edtext.getText(); // 將main 的輸入文字放到共同記憶區(intent)中 intent.putExtra("MainText", text); // 切換activity,同時等待回應,設定requestCode=0 startActivityForResult(intent, SHOW_EDITOR); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } // main等待回應訊息 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub // 檢查請求碼是否相同 if (requestCode == SHOW_EDITOR) { // 檢查是否result OK if (resultCode == RESULT_OK) { Toast.makeText(this, "Result 檢查成功", Toast.LENGTH_LONG).show(); TextView textview = (TextView) findViewById(R.id.textViewMainText); Bundle extraResult = data.getExtras(); textview.setText(extraResult.getCharSequence("chatText")); } } Toast.makeText(this, "Result 執行", Toast.LENGTH_LONG).show(); } }
全站熱搜