2016-12-04 268 views
0

我需要帮助。我正在开发一个Android应用程序。我使用recyclerview。 我的布局看起来像添加项目后。删除项目后,Recyclerview高度没有变化

PS(Ekle:添加/İçindekiler:成分/塔里夫Başlığı:配方标题)

After adding items 当我点击 “X” 按钮,则该项目被删除,但recyclerview高度不变。

enter image description here enter image description here

我该如何处理呢? 预先感谢

适配器:

public class IngredientsAddAdapter extends RecyclerView.Adapter<IngredientsAddAdapter.IngredientsVH> { 

    List<String> dataList; 
    Context context; 
    OnItemClickListener clickListener; 

    public IngredientsAddAdapter(Context context, List<String> dataList) { 
     this.context = context; 
     this.dataList = dataList; 
    } 

    @Override 
    public IngredientsVH onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.ingredients_add_list_item, viewGroup, false); 
     return new IngredientsVH(view); 
    } 

    @Override 
    public void onBindViewHolder(IngredientsVH ingredientsVH, int i) { 
     ingredientsVH.title.setText(dataList.get(i)); 

    } 

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

    class IngredientsVH extends RecyclerView.ViewHolder implements View.OnClickListener { 
     TextView title; 
     ImageButton deleteIng; 

     public IngredientsVH(View itemView) { 
      super(itemView); 
      title = (TextView) itemView.findViewById(R.id.ingredientItem); 
      deleteIng = (ImageButton) itemView.findViewById(R.id.deleteIng); 
      deleteIng.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      clickListener.onItemClick(v, getAdapterPosition()); 
      dataList.remove(getAdapterPosition()); 
      notifyItemRemoved(getAdapterPosition()); 
      notifyItemRangeChanged(getAdapterPosition(), dataList.size()); 
     } 

    } 

    public interface OnItemClickListener { 
     public void onItemClick(View view, int position); 
    } 

    public void SetOnItemClickListener(final OnItemClickListener itemClickListener) { 
     this.clickListener = itemClickListener; 
    } 

} 

活动:

ingList = (RecyclerView) findViewById(R.id.ingList); 
ingList.setNestedScrollingEnabled(false); 
ingList.setLayoutManager(new LinearLayoutManager(recipeAdd.this)); 
ingList.setItemAnimator(new DefaultItemAnimator()); 
ingList.setHasFixedSize(true); 
if (ingredientsAddAdapter == null) { 
    ingredientsAddAdapter = new IngredientsAddAdapter(recipeAdd.this, ingredientsAddArray); 
    ingList.setAdapter(ingredientsAddAdapter); 
    ingredientsAddAdapter.SetOnItemClickListener(new IngredientsAddAdapter.OnItemClickListener() { 
     @Override 
     public void onItemClick(View view, int position) { 
     } 
    }); 
} 

recipe_add.xml(这些代码是仅用于测试目的:d)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_height="match_parent" 
    android:background="@color/colorBg" 
    android:padding="5dp"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 


     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:layout_marginBottom="10dp"> 

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

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:ems="10" 
        android:id="@+id/recipeTitle" 
        android:inputType="text" 
        android:hint="Tarif Başlığı" 
        style="@style/Widget.AppCompat.Light.AutoCompleteTextView" 
        android:fontFamily="sans-serif" 
        android:textSize="14sp" 
        android:textStyle="normal|bold" 
        android:layout_margin="5dp" 
        android:background="@drawable/border" 
        android:padding="10dp" /> 

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

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

       <Button 
        android:text="Ekle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentEnd="true" 
        android:id="@+id/ingAdd" 
        android:onClick="addIng" /> 

       <TextView 
        android:text="İçindekiler" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/textView4" 
        android:textStyle="normal|bold" 
        android:textSize="14sp" 
        android:padding="10dp" 
        android:layout_centerVertical="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="true" /> 
      </RelativeLayout> 

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

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <android.support.v7.widget.RecyclerView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/ingList" /> 
     </android.support.v7.widget.CardView> 

    </LinearLayout> 

</RelativeLayout> 

成分_ add_list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@drawable/border_top" 
    android:orientation="horizontal"> 

    <ImageButton 
     android:layout_width="30dp" 
     android:layout_height="match_parent" 
     android:src="@drawable/crop__ic_cancel" 
     android:id="@+id/deleteIng" 
     android:background="@android:color/transparent" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ingredientItem" 
     android:text="Hello world" 
     android:textSize="16dp" 
     android:textColor="@color/colorDark" 
     android:textStyle="bold" 
     android:padding="8dp" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/isClick" 
     android:text="false" 
     android:textSize="16dp" 
     android:visibility="gone"/> 
</LinearLayout> 
+1

你能发布用于物品和适配器的代码吗? –

+0

当然!我需要几秒钟 –

+1

你能发布你的布局xml吗? –

回答

2

我找到了解决方案。 :D swapAdapter是答案(感谢IDE)

ingList.swapAdapter(ingredientsAddAdapter,true);