我的 android listview 不显示最后一项

Posted

技术标签:

【中文标题】我的 android listview 不显示最后一项【英文标题】:My android listview does not show last items 【发布时间】:2019-10-31 03:38:15 【问题描述】:

我已经从谷歌测试了我所能做的一切,所以。图片中有更多的错误答案列表应该显示,但没有显示。

我试过了,30dp 或更多的底部填充到列表视图android:layout_marginBottom="?attr/actionBarSize"app:layout_behavior="@string/appbar_scrolling_view_behavior "在滚动视图中添加列表视图 等,但没有什么可以解决这个问题。请提出一些建议!

xml 文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.it.jumtech.adaptest.activity.ResultDetailActivity">

<TextView
    android:id="@+id/textView2"
    android:layout_
    android:layout_
    android:layout_marginLeft="25dp"
    android:text="Result Detail"
    android:textColor="@android:color/holo_orange_dark"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="16dp"
    android:layout_marginStart="25dp" />

<TextView
    android:id="@+id/tv_name"
    android:layout_
    android:layout_
    android:layout_marginLeft="25dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginTop="8dp"
    android:textSize="16sp"
    app:layout_constraintTop_toBottomOf="@+id/textView2"
    android:layout_marginStart="25dp" />
<TextView
    android:id="@+id/tv_roll"
    android:layout_
    android:layout_
    android:textSize="16sp"
    android:layout_marginLeft="25dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginTop="8dp"
    app:layout_constraintTop_toBottomOf="@+id/tv_name"
    android:layout_marginStart="25dp" />

<TextView
    android:id="@+id/label1"
    android:layout_
    android:layout_
    android:layout_marginLeft="25dp"
    android:layout_marginStart="25dp"
    android:layout_marginTop="8dp"
    android:text="Correct Answers"
    android:textSize="16sp"
    android:textColor="@android:color/holo_blue_light"
    android:textStyle="bold"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/tv_wrongscore" />
<ListView
    android:id="@+id/lv_rightlist"
    android:layout_
    android:layout_
    tools:layout_editor_absoluteY="205dp"
    tools:layout_editor_absoluteX="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:paddingBottom="10dp"
    app:layout_constraintTop_toBottomOf="@+id/label1"/>
<TextView
    android:id="@+id/label2"
    android:layout_
    android:layout_
    android:text="Wrong Answers"
    android:textSize="16sp"
    android:layout_marginLeft="25dp"
    android:textStyle="bold"
    app:layout_constraintLeft_toLeftOf="parent"
    android:textColor="@android:color/holo_blue_light"
    android:layout_marginTop="8dp"
    app:layout_constraintTop_toBottomOf="@+id/lv_rightlist"
    android:layout_marginStart="25dp" />
<ListView
    android:id="@+id/lv_wronglist"
    android:layout_
    android:layout_
    tools:layout_editor_absoluteY="205dp"
    tools:layout_editor_absoluteX="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:paddingBottom="40dp"
    app:layout_constraintTop_toBottomOf="@+id/label2"/>

</android.support.constraint.ConstraintLayout>

列出资源文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.it.jumtech.adaptest.activity.ResultDetailActivity">

<TextView
    android:id="@+id/tv_qsn"
    android:layout_
    android:layout_
    android:textSize="18sp"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="8dp" />
<TextView
    android:id="@+id/label1"
    android:layout_
    android:layout_
    android:text="Answer "
    android:textSize="16sp"
    android:layout_marginLeft="8dp"
    app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginTop="8dp" />
<TextView
    android:id="@+id/tv_asnwer"
    android:layout_
    android:layout_
    android:textSize="16sp"
    android:textColor="#000000"
    android:layout_marginLeft="0dp"
    app:layout_constraintLeft_toRightOf="@+id/label1"
    app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
    android:layout_marginTop="8dp" />
<TextView
android:id="@+id/label2"
android:layout_
android:layout_
android:text="Choosen "
android:textSize="16sp"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toRightOf="@+id/tv_asnwer"
app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
android:layout_marginTop="8dp" />
<TextView
    android:id="@+id/tv_choosen"
    android:layout_
    android:layout_
    android:textSize="16sp"
    android:textColor="#000000"
    android:layout_marginLeft="0dp"
    app:layout_constraintLeft_toRightOf="@+id/label2"
    app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
    android:layout_marginTop="8dp" />
<TextView
    android:id="@+id/label3"
    android:layout_
    android:layout_
    android:text="Mark "
    android:textSize="16sp"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toRightOf="@+id/tv_choosen"
    app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
    android:layout_marginTop="8dp" />
<TextView
    android:id="@+id/tv_mark"
    android:layout_
    android:layout_
    android:textSize="16sp"
    android:textColor="#000000"
    android:layout_marginLeft="0dp"
    app:layout_constraintLeft_toRightOf="@+id/label3"
    app:layout_constraintTop_toBottomOf="@+id/tv_qsn"
    android:layout_marginTop="8dp" />

【问题讨论】:

你的意思是说listView不可滚动? @RahulShukla 是的,你可以这么说。 尝试从约束中指定的 id 中删除不必要的“+”,然后重新设计布局。 @RahulShukla 工作一整天,遇到一个问题。 如果可以的话,请将代码示例分享给大家看看。 【参考方案1】:

如果您在一个布局中使用两个列表视图,则需要以编程方式计算列表高度并设置为列表。 为此,link 的回答可能会有所帮助

【讨论】:

【参考方案2】:

您遵循的方法不正确。要设计这种视图,您应该创建一个嵌套的RecyclerView。在父 RecyclerView 视图中,您应该创建另一个 recyclerView。所以父母RecyclerViewadapter 将有一个孩子recyclerView。 在 adapter 类中,您可以根据您的要求扩充不同的视图类型。下面是父 Adapter 类的虚拟代码,供您参考。

@NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view;
        switch (viewType) 
            case TYPE1:
                view = inflater.inflate(R.layout.layout_1, parent, false);
                return new ViewHolder1(view);
            case TYPE_DATA:
                view = inflater.inflate(R.layout.layout_2, parent, false);
                return new Viewholder2(view);

            default:
                throw new RuntimeException("No match for found for" + viewType);
        
    



@Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) 
        if (holder instanceof Viewholder1) 
            viewholder1 = (Viewholder1) holder;
          
        if (holder instanceof Viewholder2) 
            viewholder2 = (Viewholder2) holder;
        
    


    @Override
            public int getItemViewType(int position) 
                //Based on certain condition, change your return type
               if (type1)
                 return viewType1;
               if(type2)
                 return viewType2;
                 ....        

【讨论】:

以上是关于我的 android listview 不显示最后一项的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中的顶部 ListView 项目上方(以及最后一个项目下方)添加边距

带有集合(ListView)的Android小部件不显示项目

多个ListViews在android中以编程方式创建

android从listview中删除任何项目删除最后一个元素

ListView内的Android约束布局 - 最后一项样式被破坏

Android ListView中嵌套GridView,GridView不显示