gcmから通知を受け取ったときはいつでも、そのダイアログのイベントのリストを含むアラートダイアログを表示する必要があります.カスタムトーストメッセージを使用してそれを行います.しかし、アラートダイアログボックスにリストのクリックイベントを書き込むことができません. 新しい通知を受け取るたびにこのメソッドを呼び出します。アラートダイアログが表示されますが、リストに対してonclickイベントが機能しません..
public void displayToast()
{
LayoutInflater mInflater = LayoutInflater.from(con);
View myView = mInflater.inflate(R.layout.statusbar, null);
Toast toast = new Toast(con.getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
TextView tv = (TextView) myView.findViewById(R.id.notificationtype);
ListView lv = (ListView) myView.findViewById(R.id.listView1);
lv.setAdapter(new StatusAdapter(con, list));
tv.setText("MESSAGES");
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
if (list.get(arg2).getType().equals("S Notification")) {
Intent it = new Intent(con,ViewEventActivity.class);
it.putExtra("eventid", list.get(arg2).getId());
it.putExtra("event", "team");
con.startActivity(it);
//dialog.dismiss();
}
if (list.get(arg2).getType().equals("S R Notification")) {
Intent it = new Intent(con,GameDetailsActivity.class);
it.putExtra("id", list.get(arg2).getId());
con.startActivity(it);
//dialog.dismiss();
}
if (list.get(arg2).getType().equals("A Notification")) {
Intent intent = new Intent(con,ViewItemActivity.class);
intent.putExtra("id", "" + list.get(arg2).getId());
con.startActivity(intent);
//dialog.dismiss();
}
if (list.get(arg2).getType().equals("D Notification")) {
Intent it = new Intent(con,PersonalDetails.class);
it.putExtra("personId", list.get(arg2).getId());
con.startActivity(it);
//dialog.dismiss();
}
if (list.get(arg2).getType().equals("M Notification")) {
Intent it = new Intent(con,MessageContentActivity.class);
it.putExtra("messageid", list.get(arg2).getId());
con.startActivity(it);
// dialog.dismiss();
}
}
});
toast.setDuration(Toast.LENGTH_LONG);
toast.setDuration(1800000);
toast.setView(myView);
toast.show();
}