ListView(列表)主要是用來把數據用列表方式顯示出來,當顯示數據符合用家要求時,便會選擇或點擊數據列表資料,點擊後程式可以作出回饋反應切換 Activity,並且將資料傳送到新 Activity,再運用資料作其他用途,這是個很常用的方法。
Android Studio ListView 啟動新 Activity |
開發環境:Android Studio 4.0.1 版本
原程式:C:\Development\Development_Android\Android_Project\DIY-Android-007-11 ListView OnClick Activity
程式:C:\Development\Development_Android\Android_Project\DIY-Android-007-11 ListView OnClick Activity
ArrayAdapter 是最基本的方法,ArrayAdapter 原理是宣告一個陣列,然後將資料放進去,接著 ListView 就會依照順序顯示出來,然後設定點擊監聽(OnItemClickListener),當鼠標點擊後,便可以顯示點擊資料的位置和數據,並跳躍到新 Activity,然後顯示資料位置和內容。
ListView OnClick 啟動新 Activity 編程步驟:
- 將 ListView(Mainactivity.java)實體化
- 在 Layout 配置檔(activity_main.xml)裡面放一個ListView。
- 於要放置列表的事件中執行setAdapter(Mainactivity.java)。
- 然後設定點擊監聽(OnItemClickListener)
- 點擊後的回饋工作
- 加入 activity1.java 和 activity_1.xml 作回饋工作程式
MainActivity.java:
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//ListView 要顯示的內容 String[] mLvData = {"Resistor", "Capacitor", "Inductor", "Diode", "Transistor", "Integrated Circuit", "Sensor", "Fuse", "Connector", "PCB", "Crystal", "LED", "LCD", "Battery"};
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
ListView listview = (ListView) findViewById(R.id.lv_Data); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mLvData); //ListView 要顯示的內容 listview.setAdapter(adapter);
listview.setOnItemClickListener(onClickListView); //指定事件 Method }
//點擊 ListView 事件 Method private AdapterView.OnItemClickListener onClickListView = new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this,"點選第 "+(position +1) +" 個 \n內容:"+ mLvData[position], Toast.LENGTH_SHORT).show();
ListView listView = (ListView) parent; String text1 = (String) listView.getItemAtPosition(position).toString();
// 啟動 Activity1 和傳遞點選資料 Intent appInfo = new Intent(MainActivity.this, Activity1.class); appInfo.putExtra("name", text1); startActivity(appInfo);
} }; } |
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity">
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:id="@+id/lv_Data" />
</LinearLayout> |
activity1.java:
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView;
public class Activity1 extends AppCompatActivity {
TextView mTv;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_1);
// 顯示 Mainactivity 傳送的內容 mTv = findViewById(R.id.tv_activity1); mTv.setText(getIntent().getExtras().getString("name"));
} } |
activity_1.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activity1">
<TextView android:id="@+id/tv_activity1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/>
</RelativeLayout> |
Android Studio ListView 啟動新 Activity |
沒有留言:
張貼留言