2013-10-25 3 views
0

Я пытаюсь отобразить список в андроиде, используя рекомендацию из учебника vogella для SQLite в Android:Java/Android Список_массивы давая адрес

это часть моего класса ProjectListDataSource (Это получает все данные из SQLite базы данных):

public List<ProjectList> getAllProjects() { 
     List<ProjectList> projects = new ArrayList<ProjectList>(); 

     Cursor cursor = database.query(ProjectListHelper.TABLE_PROJECT_LIST, 
      allColumns, null, null, null, null, null); 

     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 
      projects.add(cursorToProjectList(cursor)); 
      cursor.moveToNext(); 
     } 
     // make sure to close the cursor 
     cursor.close(); 

     return projects; 
     } 

private ProjectList cursorToProjectList(Cursor cursor) { 
    ProjectList projList = new ProjectList(); 
    projList.setId(cursor.getLong(0)); 
    projList.setProjName(cursor.getString(1)); 
    projList.setProjComment(cursor.getString(2)); 
    projList.setProjDateTime(cursor.getString(3)); 

    return projList; 
    } 

И это мой класс деятельности:

public class ProjectListActivity extends ListActivity implements 
    OnClickListener { 
private static final String TAG = "ProjectListActivity"; 

private ProjectListDataSource datasource; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_projectlist); 
    Log.d(TAG, "On Creat'd"); 
    init(); 

} 


private void init() { 
    // Getting data from database and adding to ListView 
    datasource = new ProjectListDataSource(this); 
    datasource.open(); 

    List<ProjectList> values = datasource.getAllProjects(); 

    ArrayAdapter<ProjectList> adapter = new ArrayAdapter<ProjectList>(this, 
      android.R.layout.simple_list_item_activated_1, values); 
    setListAdapter(adapter); 
} 

Но делать, что я получаю неожиданный результат, как это (фото):

http://i.imgur.com/tQMooi8.png

Но база данных содержит записи, как это (фото):

http://i.imgur.com/HfY2azs.png

Может кто-нибудь пожалуйста, объяснить и дать решение относительно того, почему я не могу получить представление списка, чтобы показать записи, как в базе данных ...

Спасибо, Viney

ответ

0

Здесь есть несколько проблем, в зависимости от того, что вы хотите отобразить.

Причина, по которой вы видите ссылку на строку объекта в своем списке, состоит в том, что вы используете простой ArrayAdapter, который просто вызывает toString() для объектов в массиве. Если вы переопределите toString() в ProjectList, вы можете отобразить то, что хотите (хотя обычно это не лучший способ решить эту проблему).

Другим вариантом, который позволит вам использовать простой ArrayAdapter, было бы создание массива строк из объектов ProjectList данных, которые вы хотите отобразить. Немного расточительно, но это еще один вариант.

Что вы обычно хотите сделать, это расширить ArrayAdapter и переопределить getView(). В getView() вы назначаете данные, которые хотите отобразить в представлении.

Если вы хотите отобразить все данные из объектов ProjectList в одном элементе списка, вам также необходимо создать собственный макет для представления строки.

1

Основные адаптеры, как ArrayAdapter или CursorAdapter, отобразит только одно значение в один вид. Здесь, ProjectList объекта в TextView с идентификатором android.R.id.simple_list_item_activated_1

Вам нужен один макет (для одного вида в пределах ListView) с несколькими видами, к которым будет отображать идентификатор, название, дату, комментарии и т.д., вам необходимо расширить один из адаптеров. Предпочтительно BaseAdapter или CursorAdapter.

+0

Не могли бы вы привести мне пример или указать мне на какой-то онлайн-ресурс, который поможет мне сделать это ... спасибо .. – vinzzz

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