使用SQLite数据库中的数据进行对话

时间:2012-04-24 20:35:19

标签: android sqlite dialog

我有一个酒店的列表视图,我希望当用户点击项目的长按时,会出现一个对话框,其中显示从SQLite数据库中检索到的点击酒店的信息(位置,地址,电话号码等等)。 )。 我从List中的数据库中检索数据。 在我将列表转换为String()时的对话框消息中,结果有额外的方括号,例如:Phone:[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;
}

2 个答案:

答案 0 :(得分:1)

您可以将列表加入包含TextUtils.join(", ", theList)的字符串,也可以只使用列表中的第一项(theList.get(0)),如果这足够的话。

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

如果手机有多个条目,则应打印"Phone: 12343, 3424323, 19393"

答案 1 :(得分:0)

您正在为List使用toString()方法,该List的默认实现可能使用“[”元素“]”。

您要打印列表的第一个元素吗?只需覆盖酒店类的toString()即可使用

phone.get(0).toString()

此致