2017-04-16 58 views
1

我有3个文本一recycleview,有没有办法来更新特定项目的onclick该位置,(我每个项目的数量,我想升到该项目的数量的onclick那个位置,0,1,2,3 ......) 这里是我receycleview:更新recycleview行的onclick

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> { 
    String [] Item_names,Price_items,Item_quantity; 
    public RecyclerAdapter(String [] Item_names,String [] Price_items,String [] Item_quantity) 
    { 
     this.Item_names=Item_names; 
     this.Price_items=Price_items; 
     this.Item_quantity=Item_quantity; 
    } 
    @Override 
    public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout,parent,false); 
     RecyclerViewHolder recyclerViewHolder=new RecyclerViewHolder(view); 
     return recyclerViewHolder; 
    } 

    @Override 
    public void onBindViewHolder(final RecyclerViewHolder holder, final int position) { 
     holder.ItemNameRecycler.setText(Item_names[position]); 
     holder.ItemPriceRecycler.setText(Price_items[position]); 
     holder.ItemQuantityRecycler.setText(Item_quantity[position]); 
    } 

    @Override 
    public int getItemCount() { 
     return Item_names.length; 
    } 
    public static class RecyclerViewHolder extends RecyclerView.ViewHolder{ 
     TextView ItemPriceRecycler,ItemNameRecycler,ItemQuantityRecycler; 
     public RecyclerViewHolder(View view) 
     { 
      super(view); 
      ItemNameRecycler=(TextView)view.findViewById(R.id.RowItemName); 
      ItemPriceRecycler=(TextView)view.findViewById(R.id.RowItemPrice); 
      ItemQuantityRecycler=(TextView)view.findViewById(R.id.RowItemQuantity); 
      ItemQuantityRecycler.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       } 
      }); 
     } 
    } 
} 

回答

0

您可以使用getAdapterPosition

从技术文档:

返回适应此 ViewHolder表示的项目的位置。

在你的代码

public static class RecyclerViewHolder extends RecyclerView.ViewHolder{ 
     TextView ItemPriceRecycler,ItemNameRecycler,ItemQuantityRecycler; 
     public RecyclerViewHolder(View view) 
     { 
      super(view); 
      ItemNameRecycler=(TextView)view.findViewById(R.id.RowItemName); 
      ItemPriceRecycler=(TextView)view.findViewById(R.id.RowItemPrice); 
      ItemQuantityRecycler=(TextView)view.findViewById(R.id.RowItemQuantity); 
      ItemQuantityRecycler.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // get position 
        int pos = getAdapterPosition(); //get position here 
       } 
      }); 
     } 

编辑

onClick()

public static class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     TextView ItemPriceRecycler, ItemNameRecycler, ItemQuantityRecycler; 

     public RecyclerViewHolder(final View itemView) { 
      super(itemView); 
      ItemNameRecycler = (TextView) itemView.findViewById(R.id.RowItemName); 
      ItemPriceRecycler = (TextView) itemView.findViewById(R.id.RowItemPrice); 
      ItemQuantityRecycler = (TextView) itemView.findViewById(R.id.RowItemQuantity); 

      ItemQuantityRecycler.setOnClickListener(this); 

     } 

     // onClick Listener for view 
     @Override 
     public void onClick(View v) { 

      if (v.getId() == ItemQuantityRecycler.getId()) { 
       int pos = getAdapterPosition(); 
       int value = pos + 1; 
       Toast.makeText(v.getContext(), "ITEM PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show(); 
       ItemQuantityRecycler.setText(String.valueOf(value)); 
      } else { 

      } 
     } 
    } 
+0

更新recylerview项目Textview但我怎样才能改变这种状况正的价值,如何我是否更新这个特定位置? –

+0

你的意思是?像'ItemQuantityRecycler'一样更新这个位置'TextView' ..? – rafsanahmad007

+0

是啊,你看,我有3列,一个为项目名称,一个为他的价格,一个为他的数量,可以说我有大约30个项目,我想提高1的数量,当用户按下项目名称。 –