RecyclerView没有正确显示(揉了起来)

问题描述:

我一直在试图在折叠标签的一部分布局中实现多个RecyclerView。但是,我的RecyclerView没有工作,我不知道我在代码中做了什么错误。请帮帮我!RecyclerView没有正确显示(揉了起来)

这里是GitHub的链接:github.com/arxbombus/RecipeDetails

这里是所需的视图:image

这里是我得到的一些原因:image

正如你可以看到,一切都完成了。 :(

下面,我包括我的适配器为我MainActivity布局,也是Java文件。

这里是我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
 
<android.support.design.widget.CoordinatorLayout 
 
    xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
 
    android:id="@+id/coordinatorLayout" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent"> 
 

 
    <android.support.design.widget.AppBarLayout 
 
     android:id="@+id/appBarLayout" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="400dp" 
 
     android:fitsSystemWindows="true" 
 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
 

 
     <android.support.design.widget.CollapsingToolbarLayout 
 
      android:id="@+id/collapsingToolbarLayout" 
 
      android:layout_width="match_parent" 
 
      android:layout_height="400dp" 
 
      app:title="Some Randome Recipe" 
 
      app:titleEnabled="true" 
 
      app:contentScrim="?attr/colorPrimary" 
 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 
 

 
      <ImageView 
 
       android:id="@+id/ivParallax" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="match_parent" 
 
       android:scaleType="centerCrop" 
 
       android:src="@drawable/food" 
 
       app:layout_collapseMode="parallax" 
 
       app:layout_collapseParallaxMultiplier="0.7" /> 
 

 
      <android.support.v7.widget.Toolbar 
 
       android:id="@+id/toolbar" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="?attr/actionBarSize" 
 
       app:layout_collapseMode="pin" 
 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
 
       app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 
 
     </android.support.design.widget.CollapsingToolbarLayout> 
 
    </android.support.design.widget.AppBarLayout> 
 

 
    <android.support.v4.widget.NestedScrollView 
 
     android:id="@+id/nestedScrollView" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:fillViewport="true" 
 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
 

 
     <LinearLayout 
 
      android:layout_width="match_parent" 
 
      android:layout_height="wrap_content" 
 
      android:orientation="vertical"> 
 

 
      <TextView 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/txtAbout" 
 
       android:text="About this recipe" 
 
       android:textStyle="bold" 
 
       android:textSize="13sp" 
 
       android:padding="15dp" 
 
       android:layout_marginBottom="-25dp"/> 
 

 
      <TextView 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/txtRecipeDescription" 
 
       android:text="@string/recipe_description" 
 
       android:padding="15dp" 
 
       android:layout_marginBottom="-5dp" 
 
       android:textSize="12sp"/> 
 

 
      <View 
 
       android:layout_width="match_parent" 
 
       android:layout_height="1dp" 
 
       android:background="@color/colorDivider" 
 
       android:layout_marginLeft="10dp" 
 
       android:layout_marginRight="10dp" 
 
       /> 
 

 
      <TextView 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/txtInfo" 
 
       android:text="Info" 
 
       android:textStyle="bold" 
 
       android:textSize="13sp" 
 
       android:padding="15dp" 
 
       android:layout_marginBottom="-20dp" 
 
       android:layout_marginTop="-5dp"/> 
 

 
      <android.support.v7.widget.RecyclerView 
 
       android:id="@+id/rvRecipeInfo" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="75dp" 
 
       android:layout_gravity="center_vertical" 
 
       android:orientation="horizontal" 
 
       android:padding="15dp"></android.support.v7.widget.RecyclerView> 
 

 
      <View 
 
       android:layout_width="match_parent" 
 
       android:layout_height="1dp" 
 
       android:background="@color/colorDivider" 
 
       android:layout_marginLeft="10dp" 
 
       android:layout_marginRight="10dp" 
 
       /> 
 

 
      <TextView 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/txtIngredient" 
 
       android:text="Ingredients" 
 
       android:textStyle="bold" 
 
       android:textSize="13sp" 
 
       android:padding="15dp" 
 
       android:layout_marginBottom="-20dp" 
 
       android:layout_marginTop="-5dp"/> 
 

 
      <android.support.v7.widget.RecyclerView 
 
       android:id="@+id/rvRecipeIngredient" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:orientation="vertical" 
 
       android:padding="15dp"></android.support.v7.widget.RecyclerView> 
 

 
      <Button 
 
       android:id="@+id/button" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:text="Button" /> 
 

 
      <View 
 
       android:layout_width="match_parent" 
 
       android:layout_height="1dp" 
 
       android:background="@color/colorDivider" 
 
       android:layout_marginLeft="10dp" 
 
       android:layout_marginRight="10dp" 
 
       /> 
 

 

 
      walking 
 
      <TextView 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/txtProcedures" 
 
       android:text="Procedures" 
 
       android:textStyle="bold" 
 
       android:textSize="13sp" 
 
       android:padding="15dp" 
 
       android:layout_marginBottom="-20dp" 
 
       android:layout_marginTop="-5dp"/> 
 

 
      <android.support.v7.widget.RecyclerView 
 
       android:id="@+id/rvRecipeProcedure" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:orientation="vertical" 
 
       android:padding="15dp"></android.support.v7.widget.RecyclerView> 
 

 

 

 
     </LinearLayout> 
 

 
    </android.support.v4.widget.NestedScrollView> 
 

 
</android.support.design.widget.CoordinatorLayout>

而我CardView

<?xml version="1.0" encoding="utf-8"?> 
 
<android.support.v7.widget.CardView 
 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
 
    xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:id="@+id/recipeInfoCards" 
 
    android:layout_width="81dp" 
 
    android:layout_height="75dp" 
 
    app:cardCornerRadius="6dp" 
 
    android:elevation="15dp" 
 
    android:orientation="horizontal" 
 
    > 
 

 
<LinearLayout 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:background="@color/colorRecipeInfoCardBG" 
 
    android:padding="10dp" 
 
    android:orientation="vertical"> 
 

 

 
    <TextView 
 
     android:id="@+id/txtRecipeInfoCardTitle" 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Cooking Time:" 
 
     android:textSize="11sp" 
 
     android:textColor="@android:color/black" 
 
     android:layout_gravity="center_horizontal" 
 
     android:gravity="center" 
 
     android:layout_marginTop="5dp" 
 
/> 
 

 
    <TextView 
 
     android:id="@+id/txtRecipeInfoCardDescription" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:text="20 Minutes" 
 
     android:textSize="11sp" 
 
     android:textColor="@color/colorTextSecondary" 
 
     android:layout_gravity="center_horizontal" 
 
     android:gravity="center"/> 
 

 

 
</LinearLayout> 
 

 
</android.support.v7.widget.CardView>

这里是我的MainActivity和适配器respectiviely

public class MainActivity extends AppCompatActivity { 
 

 
    ArrayList <Recipe> recipeData; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
    super.onCreate(savedInstanceState); 
 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
 
    setContentView(R.layout.activity_main); 
 

 
    recipeData = new ArrayList <Recipe>(); 
 
    createData(); 
 

 

 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
 
    setSupportActionBar(toolbar); 
 
    if (getSupportActionBar() != null) { 
 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
 
    } 
 

 
    RecyclerView recipeInfoCardRV = (RecyclerView) findViewById(R.id.rvRecipeInfo); 
 
    recipeInfoCardRV.setHasFixedSize(true); 
 
    recipeInfoCardRV.setNestedScrollingEnabled(false); 
 
    RecipeInfoAdapter recipeInfoAdapter = new RecipeInfoAdapter(this, recipeData); 
 
    recipeInfoCardRV.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); 
 
    recipeInfoCardRV.setAdapter(recipeInfoAdapter); 
 

 
    RecyclerView recipeIngredientRV = (RecyclerView) findViewById(R.id.rvRecipeIngredient); 
 
    recipeIngredientRV.setHasFixedSize(true); 
 
    recipeIngredientRV.setNestedScrollingEnabled(false); 
 
    recipeIngredientRV.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); 
 
    RecipeIngredientAdapter recipeIngredientAdapter = new RecipeIngredientAdapter(this, recipeData); 
 
    recipeIngredientRV.setAdapter(recipeIngredientAdapter); 
 
    } 
 

 
    public void createData() { 
 
    ArrayList <RecipeInfoCard> recipeInfoCards = new ArrayList <RecipeInfoCard>(); 
 
    recipeInfoCards.add(new RecipeInfoCard("Cooking Time", "20 Minutes")); 
 
    recipeInfoCards.add(new RecipeInfoCard("Calories", "3501")); 
 
    recipeInfoCards.add(new RecipeInfoCard("Procedures", "Three")); 
 

 

 
    ArrayList <RecipeIngredient> recipeIngredients = new ArrayList <RecipeIngredient>(); 
 
    for (int i = 1; i <= 10; i++) { 
 
     recipeIngredients.add(new RecipeIngredient("Ingredient " + i, String.valueOf(i), "grams")); 
 
    } 
 

 
    Recipe dm = new Recipe(recipeInfoCards, recipeIngredients); 
 
    recipeData.add(dm); 
 
    } 
 

 
}

我适配器我CardView

public class RecipeInfoAdapter extends RecyclerView.Adapter <RecipeInfoAdapter.RecipeInfoCardItemRowHolder> { 
 

 
    private Context mContext; 
 
    private ArrayList <Recipe> recipeData; 
 

 
    public RecipeInfoAdapter(Context mContext, ArrayList <Recipe> recipeData) { 
 
    this.mContext = mContext; 
 
    this.recipeData = recipeData; 
 
    } 
 

 
    @Override 
 
    public RecipeInfoCardItemRowHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recipe_info_card_view, null); 
 
    return new RecipeInfoCardItemRowHolder(v); 
 
    } 
 

 
    @Override 
 
    public void onBindViewHolder(RecipeInfoCardItemRowHolder recipeInfoCardItemRowHolder, int position) { 
 
    Recipe recipe = recipeData.get(position); 
 
    recipeInfoCardItemRowHolder.infoCardTitle.setText(recipe.getRecipeInfoCards().get(position).getRecipeInfoCardTitle()); 
 
    recipeInfoCardItemRowHolder.infoCardDescription.setText(recipe.getRecipeInfoCards().get(position).getRecipeInfoCardDescription()); 
 
    } 
 

 
    @Override 
 
    public int getItemCount() { 
 
    return (null != recipeData ? recipeData.size() : 0); 
 
    } 
 

 
    public class RecipeInfoCardItemRowHolder extends RecyclerView.ViewHolder { 
 
    protected TextView infoCardTitle; 
 
    protected TextView infoCardDescription; 
 

 
    public RecipeInfoCardItemRowHolder(View view) { 
 
     super(view); 
 
     this.infoCardTitle = (TextView) view.findViewById(R.id.txtRecipeInfoCardTitle); 
 
     this.infoCardDescription = (TextView) view.findViewById(R.id.txtRecipeInfoCardDescription); 
 
    } 
 
    } 
 
}

我没有在这里把我所有的代码,因为我觉得这个问题是足够长的时间,但我真的很感激,如果有人帮我。谢谢!

+0

u能解释一下它 –

+0

任何异常......? –

+0

@NileshRathod我想创建一个RecyclerView,但由于某种原因它没有正确显示,我不知道为什么。我添加了几个元素,但它只是作为其中一个元素显示出来,并且所有内容都被缩小了。 – Harrison

试着改变你的rvRecipeInfo RecyclerView高度..因为你的hardicoading它到75 dp这是错误的。

<android.support.v7.widget.RecyclerView 
       android:id="@+id/rvRecipeInfo" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:orientation="horizontal" 
       android:padding="15dp"></android.support.v7.widget.RecyclerView> 

similer到cardview以及

< ?xml version="1.0" encoding="utf-8"?> 
    <android.support.v7.widget.CardView 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/recipeInfoCards" 
     android:layout_width="100dp" 
     android:layout_height="75dp" 
     app:cardCornerRadius="6dp" 
     android:elevation="15dp" 
     android:orientation="horizontal" 
     > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@color/colorRecipeInfoCardBG" 
     android:padding="10dp" 
     android:orientation="vertical"> 


     <TextView 
      android:id="@+id/txtRecipeInfoCardTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Cooking Time:" 
      android:textSize="11sp" 
      android:textColor="@android:color/black" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center" 
      android:layout_marginTop="5dp" 
    /> 

     <TextView 
      android:id="@+id/txtRecipeInfoCardDescription" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="20 Minutes" 
      android:textSize="11sp" 
      android:textColor="@color/colorTextSecondary" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center"/> 


    </LinearLayout> 

    </android.support.v7.widget.CardView> 
+0

是的,但另一个RecyclerView,一个用于配料的工具也不起作用,所有这一切都是一个布局,其中包含一些TextViews – Harrison

+0

recipeInfoCardRV .setHasFixedSize(真);删除此属性,然后再试一次 –

+0

仍然不工作:(它仍然看起来像以前一样。我认为这可能是一个问题,无论我添加数据或我的布局在activity_main的方式,但我是一个新手java所以我不知道 – Harrison