2015-09-17 4 views
0

Я получил его, чтобы он показывал некоторые данные, полученные из базы данных в списке. Он отображает 10 строк из моего db, который имеет только 10 строк, но проблема в том, что он показывает это как [email protected]. Почему это так и как я могу это исправить? Так что проблема в действии LocationHistory.java. Он показывает, что странные имена пакетов на моем дисплее.ListView ArrayAdapter не отображает правильные данные

activity_location_history.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    tools:context=".LocationHistory"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@android:id/list" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

LocationsDataSource.java:

// some code 
    private static final String[] allColumns = { 
       LocationsDBOpenHelper.COLUMN_ID, 
       LocationsDBOpenHelper.COLUMN_LATITUDE, 
       LocationsDBOpenHelper.COLUMN_LONGITUDE, 
       LocationsDBOpenHelper.COLUMN_TIME}; 
    // some code 

public List<LocationData> findAll() { 
     List<LocationData> locations = new ArrayList<>(); 

     Cursor cursor = database.query(LocationsDBOpenHelper.TABLE_LOCATIONS, allColumns, null, null, null, null, null); 

     Log.i(LOGTAG, "Returned " + cursor.getCount() + " rows"); 
     if (cursor.getCount() > 0) { 
      while (cursor.moveToNext()) { 
       LocationData locationdata = new LocationData(); 
       locationdata.setId(cursor.getLong(cursor.getColumnIndex(LocationsDBOpenHelper.COLUMN_ID))); 
       Log.i(LOGTAG, "COLUMN_ID " + locationdata.getId()); 
       locationdata.setLatitude(cursor.getString(cursor.getColumnIndex(LocationsDBOpenHelper.COLUMN_LATITUDE))); 
       Log.i(LOGTAG, "COLUMN_LATITUDE " + locationdata.getLatitude()); 
       locationdata.setLongitude(cursor.getString(cursor.getColumnIndex(LocationsDBOpenHelper.COLUMN_LONGITUDE))); 
       Log.i(LOGTAG, "COLUMN_LONGITUDE " + locationdata.getLongitude()); 
       locationdata.setTime(cursor.getString(cursor.getColumnIndex(LocationsDBOpenHelper.COLUMN_TIME))); 
       Log.i(LOGTAG, "COLUMN_TIME " + locationdata.getTime()); 
       locations.add(locationdata); 
       Log.i(LOGTAG, "locationdata " + locationdata.toString()); 
       Log.i(LOGTAG, "locations " + locations.toString()); 
      } 
     } 
     return locations; 
    } 

LocationHistory.java:

// some code 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_location_history); 

     datasource = new LocationsDataSource(this); 
     datasource.open(); 

     List<LocationData> locationdata = datasource.findAll(); 
     if (locationdata.size() == 0) { 
      locationdata = datasource.findAll(); 
     } 

     ArrayAdapter<LocationData> adapter = new ArrayAdapter<LocationData>(this, 
       android.R.layout.simple_list_item_1, locationdata); 
     setListAdapter(adapter); 
    } 

// some code 

LocationData.java:

public class LocationData { 
    private long id; 
    private String latitude; 
    private String longitude; 
    private String time; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public String getLatitude() { 
     return latitude; 
    } 

    public void setLatitude(String latitude) { 
     this.latitude = latitude; 
    } 

    public String getLongitude() { 
     return longitude; 
    } 

    public void setLongitude(String longitude) { 
     this.longitude = longitude; 
    } 

    public String getTime() { 
     return time; 
    } 

    public void setTime(String time) { 
     this.time = time; 
    } 
} 

Logcat:

09-18 00:16:12.614 25181-25181/com.example.somename I/EXPLORECA﹕ COLUMN_ID 1 
09-18 00:16:12.614 25181-25181/com. example.somename I/EXPLORECA﹕ COLUMN_LATITUDE 21.36654189 
09-18 00:16:12.614 25181-25181/com. example.somename I/EXPLORECA﹕ COLUMN_LONGITUDE 6.945669 
09-18 00:16:12.614 25181-25181/com. example.somename I/EXPLORECA﹕ COLUMN_TIME 12:10:34 AM 
09-18 00:16:12.614 25181-25181/com. example.somename I/EXPLORECA﹕ locationdata com. [email protected] 
09-18 00:16:12.614 25181-25181/com. example.somename I/EXPLORECA﹕ locations [com. [email protected]] 

ответ

0

Я думаю, что проблема здесь

Log.i (LOGTAG, "locationdata" + locationdata)

на самом деле называется Log.i(LOGTAG, "locationdata " + locationdata.toString()). Но метод LocationData.toString() не реализован и используется Object.toString()

+0

Эй, спасибо за ответ. Log.i's, который я разместил там после этого, показал активность этих странных имен пакетов. Я поставил его там, чтобы увидеть, будут ли они показывать какие-либо хорошие данные вообще. Таким образом, без Log.i, он все еще показывает эти странные имена пакетов в активности. – MOTIVECODEX

0

При вызове

Log.i(LOGTAG, "locationdata " + locationdata); 

вы на самом деле пытается преобразовать список Список locationdata в строку, вы можете сделать это для primivtive но вы должны предоставить свою собственную реализацию toString, если хотите сделать это в своем классе.

добавьте

@Override 
public String toString() { 
    return this.getId(); 
} 

и повторите попытку.

Удача

+0

Эй, спасибо за ответ. Log.i's, который я разместил там после этого, показал активность этих странных имен пакетов. Я поставил его там, чтобы увидеть, будут ли они показывать какие-либо хорошие данные вообще. Таким образом, без Log.i, он все еще показывает эти странные имена пакетов в активности. – MOTIVECODEX

Смежные вопросы