2016-04-16 120 views
5

我有一个RecyclerView,当我点击第一个视图时,它添加了另一个视图,就像在图像中一样,我想要设置ID为“1”的“添加”视图固定在回收站的最后位置,而不是第一个。 enter image description hereAndroid:在RecyclerView上设置固定项目

我的适配器:

public class AddEventsAdapter extends RecyclerView.Adapter<AddEventsAdapter.ViewHolder> { 

    private List<String> items = new ArrayList<>(); 

    public void addItem(String name) { 
     items.add(name); 
     notifyItemInserted(items.size() - 1); 
    } 

    public void removeItem(int position) { 
     items.remove(position); 
     notifyItemRemoved(position); 
     notifyItemRangeChanged(position, items.size()); 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     View view = inflater.inflate(R.layout.add_event_item, parent, false); 

     return new ViewHolder(view); 
    } 


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

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     holder.setEventNameName(i + ""); 
     if(position == 0) 
     { 
      holder.theLayout.setBackgroundColor(Color.parseColor("#7F9099")); 
      holder.eventName.setText("Add"); 
     } 

    } 
    static int i; 
    class ViewHolder extends RecyclerView.ViewHolder{ 

     public TextView eventName; 
     public RelativeLayout theLayout; 




     public ViewHolder(final View itemView) { 
      super(itemView); 
      eventName = (TextView)itemView.findViewById(R.id.eventName); 
      theLayout = (RelativeLayout)itemView.findViewById(R.id.backgroundevent); 

      theLayout.setId(++i); 

      theLayout.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (getAdapterPosition()>0){ 
         removeItem(getAdapterPosition()); 
        }else { 
         addItem(""); 
        } 
       } 
      }); 

     } 

     public void setEventNameName(String TheEventName){ 
      eventName.setText(TheEventName); 
     } 
    } 
} 

在活动:

final AddEventsAdapter AddContainer = new AddEventsAdapter(); 
    AddEventsRecycler.setLayoutManager(new LinearLayoutManager(this)); 
    AddEventsRecycler.setAdapter(AddContainer); 
    AddEventsRecycler.setItemViewCacheSize(666); 

    RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator(); 
    itemAnimator.setAddDuration(1000); 
    itemAnimator.setRemoveDuration(1000); 
    AddEventsRecycler.setItemAnimator(itemAnimator); 

    AddContainer.addItem(""); 

回答

0

你尝试类似:

public void addItem(String name) { 
     if (items.size() != 0) { 
      removeItem(items.size() - 1); 
      items.add(name); 
      items.add("Add"); 
     } else 
      items.add("Add"); 

     notifyItemInserted(items.size() - 1); 
    } 

然后添加项目的id为items.size() -1

编辑: 改变,如果在下面的代码你的Holder类:

 if(position == items.size() - 1) 
    {  
     holder.theLayout.setBackgroundColor(Color.parseColor("#7F9099")); 
        holder.eventName.setText("Add"); 
       } 
+0

打开活动时崩溃 –

+0

什么是异常消息? – MilanNz

+0

java.lang.IndexOutOfBoundsException:无效的索引0,大小为0 –