0

ホテルのリストビューがあり、ユーザーがアイテムを長押しすると、SQLiteデータベースから取得したクリックしたホテルの情報(場所、住所、電話番号など)を示すダイアログが表示されます。リスト内のデータベースからデータを取得します。リストをString()に変換するときのダイアログメッセージでは、結果に余分な角かっこが含まれています。例:電話:[02239348]、どうすればよいですか?別の方法はありますか?

データベースから場所を取得するDataSource.javaのコードは次のとおりです。

 public List<Hotel> getHotelLocation(String hotelName) {
    List<Hotel> hotels = new ArrayList<Hotel>(); 
    Cursor cursor = database.query(MySQLiteHelper.TABLE_Hotel, 
            hotelsLoc, hotelsNames[0] + " like " + "'" + hotelName + "'", null, null, null, null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        Hotel hotel = cursorToHotel(cursor);
        hotels.add(hotel);
        cursor.moveToNext();
    }
    // Make sure to close the cursor
    cursor.close();
    return hotels;
}

private Hotel cursorToHotel(Cursor cursor) {
    // TODO Auto-generated method stub
    Hotel hotelname = new Hotel();
        hotelname.setName(cursor.getString(0));
    return hotelname;
}

アラートダイアログは次のとおりです。

public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    String hotelName = (String) ((TextView)parent.getChildAt(position)).getText();
    List<Hotel> location = datasource.getHotelLocation(hotelName);
    String loc = "Location: " + location.toString();
    List<Hotel> address = datasource.getHotelAddress(hotelName);
    String add = "Address: " + address.toString();
    List<Hotel> rating = datasource.getHotelRating(hotelName);
    String rat = "Rating: " + rating.toString();
    List<Hotel> phone = datasource.getHotelPhone(hotelName);
    String phoneN = "Phone: " + phone.toString();
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Information about " + hotelName);
    builder.setMessage(loc + "\n" + add + "\n" + rat + "\n" + phoneN + "\n");
            builder.setCancelable(true);
    builder.show();
    return false;
}
4

2 に答える 2

1

を使用してリストを文字列に結合するか、リストTextUtils.join(", ", theList)の最初の項目(theList.get(0))を使用するだけで十分です。

List<Hotel> phone = datasource.getHotelPhone(hotelName);
String phoneN = "Phone: " + TextUtils.join(", ", phone);

電話に複数のエントリがある場合は、を印刷する必要があります"Phone: 12343, 3424323, 19393"

于 2012-04-24T20:47:03.283 に答える
0

リストにtoString()メソッドを使用しており、そのリストのデフォルトの実装では、おそらく「[」要素「]」を使用しています。

リストの最初の要素を印刷しますか?ホテルクラスでtoString()をオーバーライドするだけで、使用できます

phone.get(0).toString()

よろしく

于 2012-04-24T20:48:47.657 に答える