Java ListView/适配器未显示最后一项

Java ListView/适配器未显示最后一项,java,android,listview,Java,Android,Listview,这是一个小应用程序,它会提出一些问题,然后显示答案。当我们回答完所有问题后,会出现新的活动,并向我们显示除最后一个答案之外的所有答案。我搜索了这个问题并找到了答案,但没有一个在我的案例中起作用。谢谢你的帮助。 这是我的代码: 主布局的XML代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co

这是一个小应用程序,它会提出一些问题,然后显示答案。当我们回答完所有问题后,会出现新的活动,并向我们显示除最后一个答案之外的所有答案。我搜索了这个问题并找到了答案,但没有一个在我的案例中起作用。谢谢你的帮助。 这是我的代码:

主布局的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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.itrio.iqtest.Result_QA"
    android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Answers"
            android:textSize="22sp"
            android:textStyle="bold"
            android:layout_margin="20dp"/>

        <ListView
            android:id="@+id/result_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </ListView>
</LinearLayout>
}

以下是LisView活动的代码:

import android.os.Bundle;
import android.app.Activity;
import android.widget.ListView;

public class Result_QA extends Activity {


    ListView result;
    ReslutListViewAdapter reslutListViewAdapter;
    String[] ques, ans;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result__q);

        Bundle b= getIntent().getExtras();
        ques = b.getStringArray(new Genius().Result_Questions);
        ans = b.getStringArray(new Genius().Result_Answers);

        result = (ListView) findViewById(R.id.result_view);
        reslutListViewAdapter = new ReslutListViewAdapter(this, ques, ans);

        System.out.println("adapter => "+reslutListViewAdapter.getCount());
        result.setAdapter(reslutListViewAdapter);
    }
}
ListViewAdapter类的代码:

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

public class ReslutListViewAdapter extends BaseAdapter {

    Activity context;
    String[] questions;
    String[] answers;

    public ReslutListViewAdapter(Activity con, String[] ques, String[] ans){
        super();
        context = con;
        questions = ques;
        answers = ans;
    }

    @Override
    public int getCount() {
        return questions.length;
    }
    private class ViewHolder {
        TextView mQ;
        TextView mA;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        LayoutInflater inflater =  context.getLayoutInflater();

        if (convertView == null)
        {
            convertView = inflater.inflate(R.layout.result_listadapter, null);
            holder = new ViewHolder();
            holder.mQ = (TextView) convertView.findViewById(R.id.question_result);
            holder.mA = (TextView) convertView.findViewById(R.id.answer_result);
        convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.mQ.setText(questions[position]);
        holder.mA.setText(answers[position]);

        return convertView;
    }
}

首先,
listview
是一个旧的
Recyclerview
出现了,这使得我们的工作更容易,并且在
Recyclerview
中做了很多改进,使开发人员的工作更容易

谈到这个问题,
ListView
不支持
wrap\u内容
。因此,将
ListView
的高度和宽度更改为
match\u parent
。然后,在适配器xml文件中,父布局高度应为
wrap\u content
,但您已将其称为
match\u parent
,因此也将其更改为
wrap\u content
。希望这能解决你的问题。如果上述解决方案不起作用,请尝试删除适配器XML布局中的填充和边距(从result_listadapter.XML文件中的父布局中)

FYI
fill\u parent
不推荐使用,我们应该使用
match\u parent
来代替它。因此,避免使用
填充父项


希望这有帮助:)

似乎是一个基本错误。如果您将
if(turns>=8){
更改为
if(turns>8)是否有效{
Genius
课程结束时?我已经尝试过了。它对我不起作用。还有其他解决方案吗?Jeeva Nandan,谢谢你的帮助和努力。我只是添加了一些条件并对代码做了一些更改,现在它开始工作了。这不是布局问题。问题出在Java代码中。
import android.os.Bundle;
import android.app.Activity;
import android.widget.ListView;

public class Result_QA extends Activity {


    ListView result;
    ReslutListViewAdapter reslutListViewAdapter;
    String[] ques, ans;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result__q);

        Bundle b= getIntent().getExtras();
        ques = b.getStringArray(new Genius().Result_Questions);
        ans = b.getStringArray(new Genius().Result_Answers);

        result = (ListView) findViewById(R.id.result_view);
        reslutListViewAdapter = new ReslutListViewAdapter(this, ques, ans);

        System.out.println("adapter => "+reslutListViewAdapter.getCount());
        result.setAdapter(reslutListViewAdapter);
    }
}
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ReslutListViewAdapter extends BaseAdapter {

    Activity context;
    String[] questions;
    String[] answers;

    public ReslutListViewAdapter(Activity con, String[] ques, String[] ans){
        super();
        context = con;
        questions = ques;
        answers = ans;
    }

    @Override
    public int getCount() {
        return questions.length;
    }
    private class ViewHolder {
        TextView mQ;
        TextView mA;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        LayoutInflater inflater =  context.getLayoutInflater();

        if (convertView == null)
        {
            convertView = inflater.inflate(R.layout.result_listadapter, null);
            holder = new ViewHolder();
            holder.mQ = (TextView) convertView.findViewById(R.id.question_result);
            holder.mA = (TextView) convertView.findViewById(R.id.answer_result);
        convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.mQ.setText(questions[position]);
        holder.mA.setText(answers[position]);

        return convertView;
    }
}