Android 인터페이스를 사용하여 RecyclerView item에 스니퍼 이벤트 추가
뒤에 hongyang의 블로그에서 배운 다음과 같은 방법:
public interface OnItemClickListener {
void onItemClick(View v,int position);
}
public interface OnItemLongClickListener {
void onItemLongClick(View v,int position);
}
private OnItemClickListener onItemClickListener;
private OnItemLongClickListener onItemLongClickListener;
첫 번째 단계: 두 개의public 인터페이스를 쓰고 인터페이스에 방법을 넣습니다. 방법의 매개 변수는 주의하십시오. 하나는 View이고 하나는 int입니다. int는position을 기록하는 데 사용됩니다.두 번째 단계: 두 개의 private 인터페이스를 인용합니다.
public void setOnItemClickListener(OnItemClickListener listener){
onItemClickListener= listener;
}
public void setOnItemLongClickListener(OnItemLongClickListener listener){
onItemLongClickListener=listener;
}
세 번째 단계: 두 개의public방법을 추가하여 호출자가 호출하고 파라미터를 인터페이스에 넣는다. 이런 효과는 호출자가 이 방법을 호출하면 우리는 호출자에게 우리의 파라미터 안에 넣은 인터페이스를 실현하도록 강요한다.
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
if (getItemViewType(position) == NORMAL_VIEW) {
holder.textView.setText(list.get(position));
if (onItemClickListener!=null){
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListener.onItemClick(holder.itemView,holder.getLayoutPosition());
}
});
}
if (onItemLongClickListener!=null){
holder.textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
onItemLongClickListener.onItemLongClick(holder.itemView,holder.getLayoutPosition());
return false;
}
});
}
}
}
4단계:onbind방법에서 우리의인터페이스가null인지 아닌지를 판단하기 위해if를 먼저 한다.null인지 건너뛰고null이 아니라는 것은 실현되었다는 것을 설명한다. 들어가서 감청방법을 설정하고 구체적인 코드를 설정한다.
이제 Activity로 돌아가서 감청 설정할 수 있어요!
adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(MainActivity.this,"the number"+position+"has been clicked",Toast.LENGTH_SHORT).show();
}
});
adapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
@Override
public void onItemLongClick(View v, int position) {
list.remove(position);
adapter.notifyItemRemoved(position);
Toast.makeText(MainActivity.this,"the number"+position+"has been removed",Toast.LENGTH_SHORT).show();
}
});
~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.