0
데이터 목록을 표시하는 RecyclerView
이 있습니다. 내가하고 싶은 일은 사용자가 해당 항목을 탭하면 해당 사용자의 연결을 해제할지 묻는 것입니다. 응용 프로그램의 여러 지점에서이 작업을 수행했으며이 코드는 완전히 작동하는 RecyclerView
OnItemTouchListener
의 코드를 기반으로 작성되었습니다. 그러나 어떤 이유에서 이것은 모든 클릭을 등록하는 것을 거부합니다. 데이터가 RecyclerView
으로 채워지므로 클릭 만 허용하지 않습니다. 나는 명백한 것을 놓쳤는가?Android RecyclerView OnItemTouchListener가 작동하지 않습니다.
public void configurePage() {
Log.d(TAG, "test = " + listOfIDs.size());
mLayoutManager = new LinearLayoutManager(AgentViewUsers.this);
mAdapter = new AgentUserViewAdapter(listOfItems);
mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), mRecyclerView, new RecyclerItemClickListener() {
@Override
public void onClick(View view, int position) {
AlertDialog.Builder build = new AlertDialog.Builder(AgentViewUsers.this);
build.setTitle("Unlink this user?");
build.setMessage("Are you sure you wish to unlink this user?");
build.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// database code that deletes that user from firebase.
}
});
build.setPositiveButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
}
@Override
public void onLongClick(View view, int position) {
}
}));
mRecyclerView.addItemDecoration(new DividerItemDecoration(AgentViewUsers.this,DividerItemDecoration.VERTICAL_LIST));
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
spinner.setVisibility(View.GONE);
// for loop that populates listOfItems from an already populated listOfIDs;
}
왜 뷰 홀더 어댑터에 onclick을 넣으려고하지 않습니까? –
필자는 Firebase과 상호 작용하기 위해 OnClick이 필요하고이 활동에만 존재하는 많은 내용을 사용하기 때문에 필자는이 경우에는 할 수 없다는 것을 알고 있습니다. 이것은 내가 응용 프로그램의 다른 여러 위치에서이 작업을 수행 한 방법이며, 여기를 제외하고는 어디에서나 사용할 수 있습니다. – markeh21
그냥 임의의 의견, 당신은 그 AlertDialog에 show()를 호출 할 수 있습니다. 또한 어쩌면 당신은 목록 항목에 대한 사용자 정의 레이아웃을 사용하고 그 레이아웃은 다른 상태에 대해 다른 drawable을 가지고 있지 않습니다. (예 : 누르기, 놓기) –