2015-11-05 81 views
2

我有一個RecyclerView這是通過膨脹CardView佈局構造的。這是通過onCreateViewHolder方法實現的。我將一個ArrayList的數據傳遞給RecyclerView如何獲取RecyclerView CardView中的物品信息Android

我的要求是,單擊列表項時,我必須加載一個新頁面,顯示所點擊項目的詳細信息。爲此,我需要獲取未在視圖中顯示的點擊項目的ID。在該視圖中,我只有該項目的名稱和電子郵件。

比方說,我傳遞的ArrayList的是Person型和人有成員變量idnameemaileducationlocation。 在RecyclerViewonBindViewHolder函數中,我只設置了nameemail

我需要獲取該項目的ID,然後只有我可以做一個數據庫命令,並獲得特定人員的詳細信息。

RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.recyclerList); 
rv.setAdapter(new NGOViewHolder(ArrayList())); 
rv.addOnItemTouchListener(// and the click is handled 
      new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() { 
       @Override 
       public void onItemClick(View view, int position) { 
        Intent intent = new Intent(getActivity(),NGODetails.class); 
        intent.putExtra("ID", (IDOfTheItemClicked)); 

})); 

我的要求是IDOfTheItemClicked,即在上述

Intent(getActivity(),NGODetails.class); 
        intent.putExtra("ID", (IDOfTheItemClicked)); 

傳遞應該是是,我已初步通過了ArrayList項目的ID。

如何在點擊列表項目時將當前顯示在視圖中的Person對象的id發送到下一個屏幕。

回答

0
set position for each item using setTag inside onCreateViewHolder method after that when you'll click then inside onclick you get a view reference from there, get that tag and convert to int(this will give you position of view) 

onCreateViewHolder(............){ 
View view; 
view.setTag(id, position); 
view.setOnTouch or Onclick(View v){ 
String position = v.getTag(),toString(); 
// get your id using this position 
} 
} 
+0

但是,View是一個inbuild類,我如何添加我自己的變量。此外,'onBindViewHolder'是來自ArrayList的數據被設置爲視圖的地方。 – sreeragnk

+0

是的,您可以添加任何變量作爲標籤。 View類有它的函數setTag(yourUniqueId,yourValue); OnBindViewHolder不需要做任何事情。只能在onCreateViewHolder方法中設置並設置偵聽器。 –

+0

'public void onBindViewHolder(RecyclerViewHolder viewHolder,int i){ //從主數組獲得單個元素 viewHolder.mName.setText(person.get_name()); viewHolder.mDesc.setText(person.getDescription()); }' 每個人都有一個ID。創建視圖時,此ID未設置。只有名稱和desc被設置。我需要傳遞id以及爲列表中的所有人創建的每個視圖。 – sreeragnk

0

如果您沒有更改適配器中的項目順序,只需在onClick中調用yourArrayList.get(position).yourgetIDOfTheItemClickedMethod即可。

+0

好吧,這似乎是一個臨時性的修復。但是,如果我正在改變物品的順序呢?如何在點擊列表項目時將視圖中當前顯示的Person對象的ID發送到下一個屏幕。 – sreeragnk

+0

您是否在設置適配器之前或之後更改項目的順序?如果以前,應該沒有問題,你會得到所示的人。但是可以在您的回收站視圖適配器中添加一個「getPerson(int position)」方法,該方法返回顯示的人員 - 通過活動/片段中的'yourAdapter.getPerson(position)'調用。 – yennsarah

相關問題