Android 为什么我的RecyclerView只包含1项?

Android 为什么我的RecyclerView只包含1项?,android,android-recyclerview,android-adapter,recyclerview-layout,Android,Android Recyclerview,Android Adapter,Recyclerview Layout,我正在创建一个天气预报应用程序。为此,我想使用RecyclerView来显示项目。问题是myRecyclerView只显示一项而不是全部。我正在使用OpenWeatherMapAPI预测 这是我的布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://

我正在创建一个天气预报应用程序。为此,我想使用
RecyclerView
来显示项目。问题是my
RecyclerView
只显示一项而不是全部。我正在使用OpenWeatherMapAPI预测

这是我的布局:

<LinearLayout 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_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/weather_background2"
android:orientation="vertical"
android:padding="5dp">

<TextView
    android:id="@+id/txt_close_weather"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_gravity="end"
    android:layout_marginRight="2dp"
    android:layout_marginTop="2dp"
    android:background="@drawable/circle"
    android:gravity="center"
    android:text="X"
    android:textColor="@color/blackTransparent"
    android:textStyle="bold" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="8"
    android:orientation="vertical">

    <TextView
        android:id="@+id/city_country_weather"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="0dp"
        android:text="KOTA"
        android:textColor="@color/blackTransparent"
        android:textSize="24dp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="2dp"
        android:text="Today"
        android:textColor="@color/blackTransparent"
        android:textSize="16dp" />

    <TextView
        android:id="@+id/current_date_weather"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="4dp"
        android:textColor="@color/blackTransparent"
        android:textSize="16dp" />

    <ImageView
        android:id="@+id/weather_icon"
        android:layout_width="160dp"
        android:layout_height="160dp"
        android:layout_gravity="center|center_horizontal"
        android:layout_marginTop="8dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/img_02d" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="2dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal"
        android:weightSum="3">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_description"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hummidity"
                android:textColor="@color/blackTransparent"
                android:textSize="14dp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/wind_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:text="@string/app_name"
                android:textColor="@color/blackTransparent"
                android:textSize="14dp" />

            <TextView
                android:id="@+id/temperature_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:text="@string/app_name"
                android:textColor="@color/blackTransparent"
                android:textSize="16dp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:gravity="center_horizontal"
    android:background="@color/whiteTr"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2.5"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/weather_daily_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal"
        android:scrollbars="none" />
</LinearLayout>
</LinearLayout>


原因是-

项目文件(R.layout.Item_weathers)具有高度匹配父级。将其更改为包装内容,如图所示-

<LinearLayout 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_width="match_parent"
    android:layout_height="wrap_content"/>


它将显示所有项目。

您可以根据天气添加行布局吗?也许它只是占据了所有的水平空间?你们滚动了吗?滚动条不是你们在“onBindViewHolder”中遍历数据的原因吗?这不是在列表中只显示一项的原因,但我相信这是错误的。此方法调用以更新给定位置的内容
       public class DialogWeatherAdapter extends 
    RecyclerView.Adapter<DialogWeatherAdapter.DialogViewHolder> {
    ArrayList<Example2> data;
    Context context;
    Activity c;

    public DialogWeatherAdapter(ArrayList<Example2> data, Context context, 
  Activity c) {
        this.data = data;
        this.context = context;
        this.c = c;
    }

    public DialogWeatherAdapter(ArrayList<Example2> weathers) {
        this.data = weathers;
    }

    @Override
    public DialogViewHolder onCreateViewHolder(ViewGroup parent, int 
 viewType) {
        LayoutInflater layoutInflater = (LayoutInflater) 
 parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.item_weathers, parent, 
 false);
        return new DialogViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DialogViewHolder holder, int position) {
        if (holder instanceof DialogViewHolder) {
            final DialogViewHolder viewHolder = (DialogViewHolder) holder;
            if (data != null) {
                for (int i = 0; i < data.size(); i++) {
viewHolder.tvCurrentDateItem.setText(Util.formatDate(data
 .get(position).getList() 
 .get(position).getDtTxt(), "dd/MM"));
                    viewHolder.ivIconItem.setImageResource(Util
  .getDrawableResourceIdByName(getApplicationContext(), ICON_PREFIX + data

 .get(getId()).getList().get(getId()).getWeather().get(getId()).getIcon()));
                    viewHolder.tvDescriptionItem.setText(data.get(position)
 .getList().get(position).getWeather().get(position).getDescription());
viewHolder.tvTemperatureItem.setText(String.valueOf(weathers
 .get(getId()).getList 
 ().get(getId()).getMain().getTemp()) + " °C");
                }
            }
        }
    }

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

    public void updateList(ArrayList<Example2> weathers) {
        this.data = weathers;
    }

    public class DialogViewHolder extends RecyclerView.ViewHolder {
        TextView tvCurrentDateItem, tvDescriptionItem, tvTemperatureItem;
        ImageView ivIconItem;

        public DialogViewHolder(View itemView) {
            super(itemView);
            tvCurrentDateItem = itemView.findViewById(R.id.current_date_weather_item);
            tvDescriptionItem = itemView.findViewById(R.id.description_item);
            tvTemperatureItem = itemView.findViewById(R.id.temperature_item);
            ivIconItem = itemView.findViewById(R.id.icon_weather_item);
        }
    }
}
<LinearLayout 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_width="match_parent"
    android:layout_height="wrap_content"/>