2022年2月3日 星期四

Android Studio - ListView 啟動新 Activity(二十九)

Android Studio - ListView 啟動新 Activity(二十九):

ListView(列表)主要是用來把數據用列表方式顯示出來,當顯示數據符合用家要求時,便會選擇或點擊數據列表資料,點擊後程式可以作出回饋反應切換 Activity,並且將資料傳送到新 Activity,再運用資料作其他用途,這是個很常用的方法。

Android Studio ListView 啟動新 Activity
操作系統:Windows 7 64-bit 版本
開發環境: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

2022年 2月 3日(Thu)天氣報告
氣溫:42.0°F / 6.0°C @ 07:00
風速:每小時 11 公里
降雨機會:70%
相對濕度:百分之 95%
天氣:多雲時陰

沒有留言:

張貼留言