Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提供地址的Java/Android Arraylist_Java_Android_Listview_Arraylist_Android Arrayadapter - Fatal编程技术网

提供地址的Java/Android Arraylist

提供地址的Java/Android Arraylist,java,android,listview,arraylist,android-arrayadapter,Java,Android,Listview,Arraylist,Android Arrayadapter,我正试图使用vogella的android中sqlite教程中的指南在android中显示一个列表: 这是我的ProjectListDataSource类的一部分(它从sqlite数据库获取所有数据): public List getAllProjects(){ 列表项目=新建ArrayList(); Cursor Cursor=database.query(ProjectListHelper.TABLE\u PROJECT\u LIST, 所有列,null,null,null,null,nul

我正试图使用vogella的android中sqlite教程中的指南在android中显示一个列表:

这是我的ProjectListDataSource类的一部分(它从sqlite数据库获取所有数据):

public List getAllProjects(){
列表项目=新建ArrayList();
Cursor Cursor=database.query(ProjectListHelper.TABLE\u PROJECT\u LIST,
所有列,null,null,null,null,null,null);
cursor.moveToFirst();
而(!cursor.isAfterLast()){
添加(游标或项目列表(游标));
cursor.moveToNext();
}
//确保关闭光标
cursor.close();
返回项目;
}
专用项目列表光标或项目列表(光标){
ProjectList projList=新建项目列表();
projList.setId(cursor.getLong(0));
projList.setProjName(cursor.getString(1));
projList.setProjComment(cursor.getString(2));
projList.setProjDateTime(cursor.getString(3));
返回项目列表;
}
这是我的活动课:

    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);
}
公共类ProjectListActivity扩展ListActivity实现
onclick侦听器{
私有静态最终字符串TAG=“ProjectListActivity”;
私有项目列表数据源数据源;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u项目列表);
Log.d(标签“On create'd”);
init();
}
私有void init(){
//从数据库获取数据并添加到ListView
数据源=新项目列表数据源(此);
datasource.open();
列表值=datasource.getAllProjects();
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_activated_1,值);
setListAdapter(适配器);
}
但在这样做的过程中,我得到了如下意想不到的结果(见图):

但数据库中有如下记录(见图):

有人能解释一下为什么我不能让列表视图显示数据库中的记录并给出解决方案吗

谢谢,
Viney

基本适配器,如ArrayAdapter或CursorAdapter,将仅将一个值映射到单个视图。此处,
ProjectList
对象映射到id为
android.R.id.simple\u list\u item\u activated\u 1的TextView


您需要一个布局(对于ListView中的单个视图),其中包含多个视图,您将映射id、名称、日期、注释等。您需要扩展其中一个适配器。最好是BaseAdapter或CursorAdapter。

这里有几个问题,具体取决于您想要显示的内容

您在列表中看到对象字符串引用的原因是,您使用的是一个普通的
ArrayAdapter
,它只是对数组中的对象调用
toString()
。如果您在ProjectList中重写
toString()
,您可以显示所需内容(尽管这通常不是解决此问题的最佳方法)

另一个允许您继续使用普通
ArrayAdapter
的选项是从要显示的数据的ProjectList对象创建字符串数组。这有点浪费,但这是另一个选项

您通常要做的是扩展
ArrayAdapter
并覆盖
getView()
。在
getView()
中,指定要在视图中显示的数据


如果您想在单个列表项中显示ProjectList对象中的所有数据,还需要创建一个自定义布局来表示行。

您能给我举个例子,或者给我指一些在线资源来指导我这样做吗…谢谢。。
    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);
}