リストを選択した時にトーストを出す
レイアウト※リストをタップしてくださいは別にいらない
リスト 作成方法
リスト アイテムの選択
今回のリストビューのidは
android:id="@+id/testList"としている
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();
}
}
}
ここでToast型のtoastを宣言している。理由はのちほど
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();
}
-
if(toast != null)toast.cancel();
これは、次のトースト表示が処理される場合
前回のトーストの表示をひっこめる用のものです
※デフォルトでトーストは時間経過によって引っ込むので
すでにトーストが表示されている時に
別のアイテムを選択しトーストを表示させようとすると
前のトーストが引っ込むまで出てこずストックされるので、
アイテムを連続して選択するといろいろ都合が悪い
このtoast.cancel();の処理を入れるため
Toast toast;の変数宣言をしている
-
Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG);
引数1:MainActivity.this
とりあえずMainActivity.thisを指定しておく
引数2:item
トーストに表示させる文字列
String型の変数をいれるか直接" "で入力
引数3:Toast.LENGTH_LONG
LENGTH_ ① この ① にはSHORTかLONGを指定できる
だいたいはLONGでよいかと -
toast.show();
トーストを発生させると思っておいてよい
型に格納して発動させるか以下の方法でもよい
変数宣言を必要とせずそのままトーストを出す
Toast.makeText(MainActivity.this,item,Toast.LENGTH_LONG).show();
そのままだす方法
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();のように
前回のトーストを引っ込めたりすることができない
※引っ込める方法は別であると思います。
今の自分には今回の方法以外分かりません