繁体   English   中英

Android:ListView不显示项目

[英]Android: ListView does not show items

我有简单的数据库列表,只想在简单的列表视图中显示。

    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>

但是列表显示总是com.packages.JobModel@dfdfdfdfdfdfdfd ,为什么? 哪里出错? 甚至创建了自定义适配器,但结果是一样的。 我是Android的新手,只是db :)的第一个ListView。 Db部分工作正常。

在此输入图像描述 这是适配器,但实际上还没有完成,我不明白我应该返回视图还是列表? :(

public class JobAdapter extends ArrayAdapter<JobModel> {
    public JobAdapter(Context context, ArrayList<JobModel> jobs) {
        super(context, 0, jobs);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        JobModel job = getItem(position);

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_find_all_jobs, parent, false);
        }


        return convertView;
    }


}

错误是,ListView获取了一个对象列表。 但它不知道它应该如何命名。 这个问题有两个解决方案:

这很简单
在JobModel中添加重写的toString()方法,并定义ListView中的标签应该是什么样子并返回它。

像这样的东西

 @Override
 public String toString(){
   return "Name: " + this.getName + "  Date: " + this.getDate();
 }

可以修改的复杂的
创建自定义ListViewAdapter,从JobModel获取要显示的信息。 互联网上有很多例子如何创建这样的适配器。

您必须使用自己的适配器,如果要使用默认适配器,则必须将String对象传递给ArrayAdapter<String> 。由于调用JobModel.toString()listview看到的这些内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM