当前位置: 首页 > 知识库问答 >
问题:

RecycleView仅显示第一个项目

袁智明
2023-03-14

问题就在这里:我创建了世界上最简单的RecyclerView,但它只显示第一个项目。我不明白为什么。谢谢你的帮助。

item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv_detail"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    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="com.bcit.moonlady.testrecycler.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/tv_hello"/>

   <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/rv_details"
        android:layout_below="@+id/tv_hello"/>
</RelativeLayout>

mainactivity.java

package com.bcit.moonlady.testrecycler;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    String[] data = {"test1", "test2", "test3"};

    RecyclerView mRecView;

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

        mRecView = (RecyclerView)findViewById(R.id.rv_details);
        mRecView.setHasFixedSize(true);
        mRecView.setLayoutManager(new    LinearLayoutManager(getApplicationContext()));
        mRecView.setAdapter(new DetailAdapter());
   }

   private class DetailView extends RecyclerView.ViewHolder {
        TextView mTextView;

        public DetailView(View itemView) {
            super(itemView);
            mTextView = (TextView)itemView.findViewById(R.id.tv_detail);
        }

        public void bindView(String string) {
            mTextView.setText(string);
        }
   }

   private class DetailAdapter extends RecyclerView.Adapter<DetailView> {
       @Override
       public DetailView onCreateViewHolder(ViewGroup parent, int viewType)          {
            LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
            View v = layoutInflater.inflate(R.layout.item_layout, parent, false);
            return new DetailView(v);
       }

       @Override
       public void onBindViewHolder(DetailView holder, int position) {
           String string = data[position];
           holder.bindView(string);
       }

       @Override
       public int getItemCount() {
           return data.length;
       }
   } 
}

共有1个答案

壤驷高旻
2023-03-14

如果您使用的是Android Support Library v23.2.0或更高版本,则需要将item_layout高度更改为wrap_content

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv_detail"/>
</RelativeLayout>
 类似资料:
  • 最后是我的适配器类

  • 问题内容: 如何只显示第一个角元素? 我正在这样使用: 但是由于我没有重复,所以我不必使用吗?我如何才能只显示第一个,而不必进行ng-repeat? 问题答案: 不要使用ng-repeat指令,这应该可以工作:

  • 我有一个RecycerView,它将在设备中安装apk,并与cardview排序,因为标题说我想只在第一个cardview项上显示特定的文本(RecycerView viewholder)

  • 我遵循了以下线程中接受的答案(来自@kcoppock)中的步骤。https://stackoverflow.com/a/15264039/3296263 或网格视图,包含两列和自动调整大小的图像 编辑:这是代码。网格视图代码: 网格项布局:main_category_list_content.xml 自定义SquareImageView类: 适配器代码: 我设置适配器的活动代码 我没有显示所有6个

  • 这里是ICS文件内容: 在雷鸟和Gmail中,我只能看到第一个(按顺序)事件。这是邮件客户端的正常行为吗?我应该为每个VEVENT创建单独的. ics文件,然后用单个邮件发送吗?提前感谢帮助!

  • 我正在使用ffmpeg将视频按帧分割。对于25fps的视频,我的期望是,它将显示0帧40毫秒,然后显示1帧40毫秒,等等。然而,当我使用ffmepg分析视频时,这不是我得到的结果。 我使用以下命令从视频中提取帧: 在这种情况下,我希望和是相同的帧,但是生成的pngs是不同的。然而,另一方面,和是相同的帧,而和是不同的帧。似乎的帧只显示1ms。我在多个不同的视频上测试过这个,结果一致。有人能解释为什