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' 팽창 된 레이아웃은 nullpointer를 생성하지 않기 때문에 클릭 수를 처리하고자하는 버튼을 찾을 수 있습니다 (이는'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

관련 문제