Aja*_*rni 1 android android-adapter android-fragments
我有一个回收站适配器,在其中添加setOnClickListener了适配器中的项。代码如下:
@Override
public void onBindViewHolder(final FiltersAdapter.MyViewHolder holder, final int position) {
holder.mOrganizer.setText(filtersList.get(position));
holder.mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//Log.e("message","ONclick FIlter");
if (holder.mOrganizerCheck.isChecked()){
holder.mOrganizerCheck.setChecked(false);
}else {
holder.mOrganizerCheck.setChecked(true);
int pos = holder.getAdapterPosition();
filtersList.get(pos);
/*Bundle bundle = new Bundle();
bundle.putInt(pos, );*/
Log.d(TAG, "onClick: " +filtersList);
Log.d(TAG, "onClick of position: " +pos);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是片段代码,用于处理从适配器到片段的值。
private void initView() {
mrvFilterBySender = (RecyclerView) mFilterView.findViewById(R.id.rvFilterBySender);
mFiltersAdapter = new FiltersAdapter(getActivity(), mListOrganizer);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext());
mrvFilterBySender.setLayoutManager(mLayoutManager);
mrvFilterBySender.setAdapter(mFiltersAdapter);
mFiltersAdapter.notifyDataSetChanged();
mrvFilterBySender.setAdapter(mFiltersAdapter);
mrvFilterBySender.setRecyclerListener(new RecyclerView.RecyclerListener() {
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
holder.getAdapterPosition();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过pos并重视pos从适配器到片段的价值。但是我的代码无法正常工作。我该如何解决?
使处理点击事件的界面进入recyclerview ..下面的代码用于处理点击事件。
onItemClickListner onItemClickListner;
public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner{
void onClick(String str);//pass your object types.
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
String data=mStringList.get(position); // if you pass object of class then create that class object.
holder.textView.setText(data);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onClick(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后在将适配器绑定到RecyclerView下面的代码调用中之后。
mRvData.setLayoutManager(new LinearLayoutManager(this));
mRvData.setAdapter(recyclerViewAdpater);
recyclerViewAdpater.notifyDataSetChanged();
recyclerViewAdpater.setOnItemClickListner(new RecyclerViewAdpater.onItemClickListner() {
@Override
public void onClick(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
在适配器中创建接口
public interface OnItemClickListener {
void onItemClicked(int position, Object object);
}
Run Code Online (Sandbox Code Playgroud)
在您的适配器呼叫中
Adapter adapter = new Adapter(context, list, new Adapter.OnItemClickListener() {
@Override
public void onItemClicked(int position, Object object) {
// Handle Object of list item here
}
});
Run Code Online (Sandbox Code Playgroud)
在您的适配器上
private OnItemClickListener onItemClickListener; // Global scope
Run Code Online (Sandbox Code Playgroud)
在构造函数调用中:
this.onItemClickListener = onItemClickListener;
Run Code Online (Sandbox Code Playgroud)
在您的项目点击事件上:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListener.onItemClicked(position, _list.get(position));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4689 次 |
| 最近记录: |