私は、カレンダーアプリケーションと基本的にはこの背後にあるアイデアを使って作業しています。特定の日付に追加されたイベントのListViewがあります。 ListViewで特定のイベントが発生した場合、onClickメソッドはそのイベントのIDをデータベースから取得し、そのイベントで新しいアクティビティを開始します。だから、そのIDをonClickメソッドに渡す必要があります。私は同様の問題HEREを見つけましたが、私の場合はそれほど理解できません。ListViewアイテムがクリックされたときにデータベースからアイテムのIDを取得する
私はこのcreateBookings
メソッドを持っています。それは、イベントが追加され、その日のイベントのリストを返す毎日のループに入ります。
Booking event = new Booking(eventID,color+" "+eventTitle+" "+start_time, data);
しかしonClickListenerは、リストビューのために呼び出されたときにどのように私は後でそれを得るのです。私はこのようなeventID
を渡す引き受ける
public List<Booking> createBookings(Date data) {
if(data!=null) {
.....
ArrayList<Booking> events = new ArrayList<>();
if (c.moveToFirst()) {
do {
Integer eventID;
String eventTitle, start_date, start_time, end_date, color;
eventID = c.getInt(0);
eventTitle = c.getString(1);start_time = c.getString(4); color = "•"+c.getString(7);
if(eventTitle.isEmpty())eventTitle="(no title)";
Booking event = new Booking(eventID,color+" "+eventTitle+" "+start_time, data);
events.add(event);
} while (c.moveToNext());
}
return events;
}
は大丈夫でしょうか?私がやって管理されるすべての
final List<String> mutableBookings = new ArrayList<>();
final ListView bookingsListView = (ListView) findViewById(R.id.bookings_listview);
final ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mutableBookings);
bookingsListView.setAdapter(adapter);
bookingsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> bookingsListView, View view,
int position, long id) {
String item = ((TextView)view).getText().toString();
Toast.makeText(getApplicationContext()," "+item, Toast.LENGTH_SHORT).show();
}
});
マイブッキングクラス..選択した項目ののgetText値である:
public class Booking {
private Integer id;
private String title;
private Date date;
public Booking(Integer id, String title, Date date) {
this.id = id;
this.title = title;
this.date = date;
}
//lets say I had this method here.. would it return the correct event id
//when called in onClickListener above?
public String getBookingId() {
return ""+id;
}
}
'onItemClick()'に 'booking booking = mutableBookings.get(position);'を入力すると、エラーが発生します: '必須:mypackagename .MainActivity.Booking 見つかった:java.lang.String' – Rimvydas
ああ、私は 'mutableBookings'が' Booking'クラスの 'ArrayList'でしたが、Stringの' ArrayList'だと思いました。エラー –
'mutableBookings'にデータを追加しますか? 'createBookings()'メソッドはいつ呼ばれますか? –