2016-12-03 66 views
0

我从数据库中读取数据,并把它变成一个ArrayList中:适应的ArrayList到自定义的ListView

public List<ProcessObject> getAllDeadlines(){ 

    List<ProcessObject> processObjectList = new ArrayList<>(); 
    Cursor cursor = database.query(DatabaseHelper.TABLE_DATABASE, columns, null, null, null, null, null); 

    ProcessObject processObject; 
    cursor.moveToFirst(); 
      while(!cursor.isAfterLast()){ 
       processObject = cursorToProcessObject(cursor); 
       processObjectList.add(processObject); 
       Log.d(LOG_TAG, "ID: " + processObject.getId()+ ", Content (title): " + processObject.getTitle()); 
       cursor.moveToNext(); 
      } 
    cursor.close(); 

    return processObjectList; 
} 

现在我想的对象列表改编成定制的ListView。但是,如何从ArrayList中提取对象的属性以将它们引用到Custom ListView中的TextView?

到目前为止,我的代码是:

public void showAllDeadlines() { 
    List<ProcessObject> list = datasource.getAllDeadlines(); 

    ArrayAdapter<ProcessObject> adapter = new ArrayAdapter<ProcessObject>(
      this, 
      android.R.layout.simple_list_item_1, 
      list); 
    DeadlineListView = (ListView) findViewById(R.id.listview); 
    DeadlineListView.setAdapter(adapter); 
} 

的列表显示了类似[email protected]对象。
我想这是因为我有我的ProcessObject类中没有return语句:

public class ProcessObject { 
    private int id; 
    private String title; 
    private String description; 
    private String deadline; 

    public ProcessObject(int id, String title, String description, String deadline){ 
     this.id = id; 
     this.title = title; 
     this.description = description; 
     this.deadline = deadline; 
    } 

    public int getId(){ 
     return id; 
    } 
    public void setId(int id){ 
     this.id = id; 
    } 

    public String getTitle(){ 
     return title; 
    } 
    public void setTitle(String title){ 
     this.title = title; 
    } 

    public String getDescription(){ 
     return description; 
    } 
    public void setDescription(String description){ 
     this.description = description; 
    } 

    public String getDeadline(){ 
     return deadline; 
    } 
    public void setDeadline(String deadline){ 
     this.deadline = deadline; 
    } 
} 

回答

0

我解决了它这样的:

private void displayListView() { 
    Cursor cursor = datasource.fetchAllData(); 

    // The desired columns to be bound 
    String[] columns = { 
      DatabaseHelper.COLUMN_TITLE, 
      DatabaseHelper.COLUMN_DESCRIPTION, 
      DatabaseHelper.COLUMN_DEADLINE, 
    }; 

    // the XML defined views which the data will be bound to 
    int[] to = new int[] { 
      R.id.processobject_title, 
      R.id.processobject_description, 
      R.id.processobject_deadline, 
    }; 

    // create the adapter using the cursor pointing to the desired data 
    //as well as the layout information 
    dataAdapter = new SimpleCursorAdapter(
      this, R.layout.listview_viewlayout, 
      cursor, 
      columns, 
      to, 
      0); 

    ListView listView = (ListView) findViewById(R.id.listview); 
    // Assign adapter to ListView 
    listView.setAdapter(dataAdapter); 
    activateAddButton(); 
}; 

数据源:

public Cursor fetchAllData(){ 
    Cursor cursor = database.query(DatabaseHelper.TABLE_DATABASE, columns, null, null, null, null, null); 

    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 
相关问题