此範例為ListView的實作範例,結果如下圖顯示,

圖片下方ListView為顯示的List內容,(從Button,Edit,等....)

當選擇list Item時,會觸發 OnItemClickListeneronItemClick

透過onItemClick內所實作的Intent將畫面轉到對應的Activity頁面顯示。

listview 範例

2014-11-08 07.23.03

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();

	}
}

全站熱搜
創作者介紹
創作者 巴奈特攝影日記 的頭像
巴奈特攝影日記

巴奈特 想到了什麼

巴奈特攝影日記 發表在 痞客邦 留言(0) 人氣()