2016年5月17日 星期二

Android 元件(Adapter) GridView網格視圖(基礎應用、延伸應用 舒爾特方格)

Android 元件 Adapter、GridView

1.基本應用:



使用介紹: GridView網格視圖,並運用Adapter放入資料


我們開始來實現這個功能吧
Layout
<?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"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:weightSum="1"
  tools:context="com.example.app_bingo.MainActivity">



  <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:onClick="onclick"
      android:text="洗牌" />



  <GridView
      android:id="@+id/gridView"
      android:layout_width="wrap_content"
      android:layout_height="match_parent"
      android:layout_gravity="bottom"
      android:layout_weight="0.83"
      android:numColumns="5" />
</LinearLayout>


JAVA
package com.example.app_bingo;


import android.content.Context;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.GridView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class MainActivity extends AppCompatActivity {


//先宣告你會使用到的
  private Context context;
  private GridView gridView;
  private List<Integer> list;
  private ArrayAdapter<Integer> adapter;



  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      context = this;
      gridView = (GridView) findViewById(R.id.gridView);



      //創造出一個陣列,並放入資源
      list = new ArrayList<>();
      for (int i = 1; i <= 25; i++) {
          list.add(i);
      }


      //創造出一個Adapter
      adapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_dropdown_item_1line, list);
      
      //設定adapter到gridView中
      gridView.setAdapter(adapter);


      //當我的gridView ,設定可點擊,並引發一個事件
      //這邊非常的重要,因為不同的View,set的東西不太一樣
      // Spinner就要.setOnItemSelectedListener();
      gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              
               //如果 當我點擊下去,我就Toast.內容
              Toast.makeText(context, list.get(position).toString(), Toast.LENGTH_LONG).show();
          }
      });
  }


  public void onclick(View view) {


      //洗牌的功能
      Collections.shuffle(list);


      //刷新資料
      adapter.notifyDataSetChanged();


  }
}






2.延伸應用:遊戲

使用介紹:

我們開始來實現這個功能吧
Layout
<?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:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context="com.example.app_bingo.MainActivity"
  android:orientation="vertical"
  android:weightSum="1">



  <LinearLayout
      android:orientation="horizontal"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:weightSum="1">


      <Button
          android:onClick="onclick"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="開始遊戲"
          android:id="@+id/button" />


      <Chronometer
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/chronometer"
          android:layout_weight="0.68"
          android:textSize="30dp" />


  </LinearLayout>


  <GridView
      android:layout_width="wrap_content"
      android:layout_height="match_parent"
      android:id="@+id/gridView"
      android:layout_gravity="bottom"
      android:numColumns="5"
      android:layout_weight="0.83" />
</LinearLayout>

JAVA
package com.example.app_bingo;


import android.content.Context;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.GridView;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class MainActivity extends AppCompatActivity {
  private Context context;
  private GridView gridView;
  private List<Integer> list;
  private ArrayAdapter<Integer> adapter;
  private Button button;
  private Chronometer chronometer;
  private int number = 1;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      context = this;
      gridView = (GridView) findViewById(R.id.gridView);


      button=(Button)findViewById(R.id.button);
      chronometer = (Chronometer) findViewById(R.id.chronometer);
      
    //設定畫面 gridView是隱藏的
     gridView.setVisibility(View.INVISIBLE);


      list = new ArrayList<>();
      for (int i = 1; i <= 25; i++) {
          list.add(i);
      }


      adapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_dropdown_item_1line, list);
      gridView.setAdapter(adapter);
      gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


    });
  }


  public void onclick(View view) {


      Collections.shuffle(list);
      adapter.notifyDataSetChanged();


      //時鐘基本的設定
      chronometer.setBase(SystemClock.elapsedRealtime());


      //開始
      chronometer.start();


      //設定標題
      setTitle("開始遊戲");


      //改變按鈕的文字
      button.setText("開始倒數");


      //設定gridView為隱藏
      gridView.setVisibility(View.VISIBLE);



  }
}
我們來看看成果吧



















沒有留言:

張貼留言