초급 단계를 벗어나고자 Interface 에 대해 공부하고 있는데 생각만큼 이해가 잘 안된다.
https://guides.codepath.com/android/Creating-Custom-Listeners 를 보고 테스트 해본 걸 적어둔다.
import android.view.View; |
import android.os.Bundle; |
Recyclerview 에서 Apdater를 만들어서 Interface 를 통해 데이터를 주고 받은 걸 해보고 싶은데 이해를 못한 부분이 있는지 예제를 보고 따라해보고 막상 적용해보려고 하면 막힌다.
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
를 통해서 데이터를 주고 받은 걸 해보고 싶은데 전혀 동작이 안된다.
생성자에 값을 넘겨서 처리하면 동작되는데 분리해서 접근하면 안되네.
뭔가 가능한 방법이 있을 거 같은데 실력이 미천해서 완벽한 해결을 못하고 Inner Class 로 처리를 하고 있다.
아래와 같이 생성자를 통해서 값을 넘기면 원하는 결과를 얻을 수는 있다.
public class StaffListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
public OnItemClickListener listener;
public StaffListAdapter(Context mContext, ArrayList<Group_Item> items, OnItemClickListener listener) {
this.mContext = mContext;
IvList = items;
this.listener = listener;
}
}
public class StaffList extends AppCompatActivity {
Context context;
private ArrayList<Group_Item> staffItemList = new ArrayList<>();
RecyclerView.Adapter staffListAdapter;
staffListAdapter = new StaffListAdapter(this, staffItemList, new StaffListAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if(staffItemList.get(position).getIsFolder().equals("1")){
} else if(staffItemList.get(position).getIsFolder().equals("0")){
}
}
});
listView.setAdapter(staffListAdapter); // 어댑터를 리스트뷰에 세팅
}
'안드로이드 > Interface' 카테고리의 다른 글
Android Interface AsyncTask 예제 (0) | 2019.11.05 |
---|---|
Java Interface Example (0) | 2019.09.05 |
Java 인터페이스(interface) 개요 (0) | 2019.08.20 |
Android Interface 예제 ★★★ (0) | 2018.08.22 |
Recyclerview different activity (인터페이스 처리) (2) | 2018.07.31 |