Java Android:ListView不显示项目
我有来自数据库的简单列表,只想在简单列表视图中显示Java Android:ListView不显示项目,java,android,android-layout,listview,Java,Android,Android Layout,Listview,我有来自数据库的简单列表,只想在简单列表视图中显示 public class FindAllJobs extends ListActivity { private JobOperations operations; ArrayList<JobModel> jobs; @Override protected void onCreate(Bundle savedInstanceState) {
public class FindAllJobs extends ListActivity {
private JobOperations operations;
ArrayList<JobModel> jobs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_all_jobs);
operations = new JobOperations(this);
operations.open();
jobs = operations.getJobListBySearchKey("python");
operations.close();
//ListView listView = (ListView)findViewById(R.id.list);
//JobAdapter adapter = new JobAdapter(this,jobs);
ArrayAdapter<JobModel> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, jobs);
//listView.setAdapter(adapter);
setListAdapter(adapter);
}
<?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:id="@+id/activity_find_all_jobs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="jobs.find.com.finddevjobs.models.FindAllJobs">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
</LinearLayout>
错误在于,ListView获取了一个对象列表。但它不知道应该如何命名它们。 此问题有两种解决方案:
简单的一个
在JobModel中添加重写的toString()方法,并在其中定义ListView中的标签应该是什么样的,然后返回它 像这样的
@Override
public String toString(){
return "Name: " + this.getName + " Date: " + this.getDate();
}
可以修改的复杂版本创建一个自定义ListViewAdapter,从JobModel中获取要显示的信息。internet上有许多创建这样一个适配器的例子。您必须拥有自己的适配器,如果您想使用默认值,必须将String对象传递给
ArrayAdapter
。这些内容是您在listview
中看到的,因为调用了JobModel.toString()
Android将无法在ArrayAdapter
中自动显示您的JobModel
,因为它只是试图在您的对象上调用.toString()
,然后显示它。您可以发布您为自定义适配器尝试的代码吗?这将是一条路要走。如果您只想从每个JobModel
中显示一个字符串,您还可以构建一个新的字符串列表
,并在ArrayAdapter
中显示它,我认为它是重复的,您可以按照此链接进行操作,好的,现在了解问题:)我希望自动从对象转换为列表:)是的。你可以使用这篇文章@ArmenArzumanyanok,我会试试的,谢谢,我希望能自动将我的jobmodel转换为列表视图:))
@Override
public String toString(){
return "Name: " + this.getName + " Date: " + this.getDate();
}