AndroidStudio トーストを使う

## リストを選択した時にトーストを出す
:::note info
## イメージ
![携帯.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/e22c10e5-839c-758a-a73b-85a2fae2b24d.gif)

**トースト(Toast)**
画面の下側に出てくるこいつ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/3937aebc-dfd8-7d13-b0a8-d29aa6bf4c10.png)
:::

レイアウト※リストをタップしてくださいは別にいらない
[**リスト　作成方法**](https://qiita.com/mk-000856/items/104bd7075fd90e22fd23)
[**リスト　アイテムの選択**](https://qiita.com/mk-000856/items/0a4668802ffa59f852d4)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/4f49ea1b-345f-5d7a-2767-82609b110b44.png)

今回のリストビューのidは
android:id="@+id/testList"としている

:::note info
## インポート
### import android.widget.Toast;
:::

~~~java:MainActivity
public class MainActivity extends AppCompatActivity {
    Toast toast;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //リストをタップした時のイベント
        ListView listview = findViewById(R.id.testList);
        listview.setOnItemClickListener(new ListClickTest());
    }

    private class ListClickTest implements AdapterView.OnItemClickListener{
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long notInUse){
            String item = (String)parent.getItemAtPosition(position);
            item = "選んだアイテム　＝　"+item;
            if(toast != null)toast.cancel();
            toast = Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG);
            toast.show();
        }
    }
}
~~~

<br></br>
ここでToast型のtoastを宣言している。理由はのちほど
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/71688e55-51dd-df35-3446-d241951862d4.png)

~~~java:public void onItemClick内のトーストの記述
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long notInUse){
     String item = (String)parent.getItemAtPosition(position);
     item = "選んだアイテム　＝　"+item;
     if(toast != null)toast.cancel();
     toast =Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG);
     toast.show();
}
~~~
:::note info
- **if(toast != null)toast.cancel();**
これは、次のトースト表示が処理される場合
前回のトーストの表示をひっこめる用のものです
※デフォルトでトーストは時間経過によって引っ込むので
　すでにトーストが表示されている時に
 　別のアイテムを選択しトーストを表示させようとすると
　前のトーストが引っ込むまで出てこずストックされるので、
 　アイテムを連続して選択するといろいろ都合が悪い
 **このtoast.cancel();の処理を入れるため**
 **Toast toast;の変数宣言をしている**
 <br></br>
 - **Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG);**
 **引数１：MainActivity.this**
 　とりあえずMainActivity.thisを指定しておく
 **引数２：item**
    　トーストに表示させる文字列
     　String型の変数をいれるか直接" "で入力
 **引数３：Toast.LENGTH_LONG**
 　LENGTH_ ① この ① にはSHORTかLONGを指定できる
  　だいたいはLONGでよいかと
 - **toast.show();**
 トーストを発生させると思っておいてよい
 型に格納して発動させるか以下の方法でもよい
:::
:::note info
**変数宣言を必要とせずそのままトーストを出す**
Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG).show();
~~~java:そのままだす方法
long notInUse){
     String item = (String)parent.getItemAtPosition(position);
     item = "選んだアイテム　＝　"+item;
     /*不要になる
     if(toast != null)toast.cancel();
     toast =Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG);
     toast.show();*/
     Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG).show();
}
~~~
この場合はtoast.cancel();のように
前回のトーストを引っ込めたりすることができない
![携帯.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/beb54915-aa53-44b8-12a8-7d6e41614f79.gif)

※引っ込める方法は別であると思います。
　今の自分には今回の方法以外分かりません
:::