0

我一直在試圖讓按鈕的onClickListener從充氣佈局工作。我想這一點,但什麼也沒有發生:膨脹的視圖按鈕onClickListener內部沒有響應RecyclerView適配器

LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.my_profile_fragment, null); 
Button svBtn = (Button) view.findViewById(R.id.saveBtn); 

svBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     System.out.println("CLICKED"); 
    } 
}); 

裏面的RecyclerView適配器我在onCreateViewHolder擁有卡片的佈局膨脹的原始佈局,我能與它交互:

@Override 
public ItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.single_card, null); 

    return new ItemRowHolder(v); 
} 

但我想要與不同佈局(片段佈局)中的按鈕進行交互。那有可能嗎?如果是這樣,我怎麼能做到這一點?

+0

是否可以與來自不同佈局的按鈕點擊進行交互? – branHazz

+0

它看起來不能在其視圖'(RecyclerView)'之外註冊點擊。因爲'my_profile_fragment'膨脹佈局沒有產生任何空指針,我可以找到我想要處理點擊的按鈕(位於'my_profile_fragment'佈局中)。 – branHazz

回答

0

嘗試view.getParent()得到您的片段的父視圖。

+0

view.getParent()。findViewById - 不可能。如果將它轉換爲(View),我得到nullpointer View a =(View)view.getParent(); a.findViewById(R.id ...... – branHazz

0

你這樣做的方式,不幸的是不會工作。

轉到您的onBindViewHolder(ViewHolder viewholder, int position)方法,並使用viewholder的字段直接設置您的點擊偵聽器。

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) { 
    viewHolder.svBtn.setOnClickListener(this); 
} 
+0

svBtn完全在不同的佈局中,與這個RecyclerView沒有關係。我嘗試在所有RecyclerView方法中膨脹不同的佈局,並在那裏設置onClickListener,但仍然不起作用。 – branHazz