2017-04-16 54 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的數量,當用戶按下項目名稱。 –