java - 自定义适配器不在 ListView 中显示文本

标签 java android xml listview

我最近开始为 android 编程。我正在应用程序中编写一个简单的自定义适配器类。问题是适配器没有在 ListView 中显示任何文本。 logcat 未显示任何错误消息,但应用程序仍未按预期运行。

我包含了我的代码文件 fragment 以供引用-

成绩单.java

package com.example.jsk.myreportcard;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;

import java.util.ArrayList;


public class Reportcard extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reportcard);    

        ArrayList<Result>s=new ArrayList<Result>();    

        s.add(new Result("Science","A")); s.add(new Result("Maths","A"));     

        ReportAdapter adapter=new ReportAdapter(this, s);
        ListView l=(ListView)findViewById(R.id.list);
       l.setAdapter(adapter);
    }
}

结果.java

package com.example.jsk.myreportcard;


public class Result  {

  private   String subject,grade;

    public Result(String subjec, String grad)
    {
        subjec=subject;
        grad=grade;
    }

    public String getSubject()
    {
        return subject;
    }
    public String getGrade()
    {
        return grade;
    }

}

ReportAdapter.java

package com.example.jsk.myreportcard;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.ArrayList;



public class ReportAdapter extends ArrayAdapter<Result> {

    public ReportAdapter(Activity context, ArrayList<Result>w) {
        super(context, 0, w);

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

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

        Result res=getItem( position);
        TextView sub=(TextView)v.findViewById(R.id.t1);
        sub.setText(res.getSubject());
        TextView grad=(TextView)v.findViewById(R.id.t2);
        grad.setText(res.getGrade());

//        return super.getView(position, convertView, parent);
    return v;
    }


}

现在是布局文件-

成绩单.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

</ListView>

lay_text.xml

<?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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    android:id="@+id/lay">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/t1"
        tools:text="hello"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/t2"
        tools:text="World"/>

</LinearLayout>

请帮助我让这个应用正常运行。 谢谢

最佳答案

您不是在构造函数中赋值,而是将 Stings 的默认值即 null 赋给局部变量 subjecgrad

public Result(String subjec, String grad)
{
    subjec=subject; //  yourvalue = null
    grad=grade;     //  yourvalue = null
} 

应该是

public Result(String subjec, String grad)
{
    subject=subjec; //  datafield = yourvalue
    grade=grad;     //  datafield = yourvalue
}

关于java - 自定义适配器不在 ListView 中显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42597240/

相关文章:

java - setDisplayHomeAsUpEnabled 关闭 ActionBarDrawerToggle

java - Java Web 应用程序中的 session 过期时如何重定向到登录页面?

java - 在 Java 7 上使用 Apache Commons DBCP 1.4 会出现什么问题?

java - 如何在android中创建一个循环临时 Action 的线程

PHP DOMDocument 错误处理

xml - 确定上下文节点在另一个节点集中的位置

java - Spring-data-mongo 无法使用构造函数实例化 java.util.List

java - android Java 如何从 TextView 添加新的文本行

java - Android SDK安装找不到JDK

SQL Server 存储过程因使用 XML/ANSI_NULLS、QUOTED_IDENTIFIER 选项而失败