【发布时间】:2016-08-08 05:27:06
【问题描述】:
您好,我正在使用 recyclerview,其中 onitem 点击侦听器不起作用,我也使用接口实现。 我的编码 在片段中:
public void setList() {
int total = 0;
for (CartRes item : cartBasket) {
}
final LinearLayoutManager layoutManager = new GridLayoutManager(context,2);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
adapter = new NewAdapter(context, cartBasket, mListener, MYFRAGMENT, MyJavaClass.this);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
public interface CartListInterface {
// TODO: Update argument type and name
void onListFragmentInteraction(CartRes item);
}
@Override
public void onStop() {
super.onStop();
CommonUtil.dbUtil.close();
}
@Override
public void onStart() {
super.onStart();
CommonUtil.dbUtil.open();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof CartListInterface) {
mListener = (CartListInterface) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnAccListFragInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
和我的适配器:
public NewAdapter(Context context, List<CartRes> cartBasket, MyJavaClass.CartListInterface mListener, String myfragment, MyJavaClass Cartfragment) {
cartRes = cartBasket;
MYFRAGMENT = myfragment;
this.mListener = mListener;
this.con = context;
this.fragment = Cartfragment;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chicken_list, parent, false);
CommonUtil.dbUtil = new DbUtil(con);
CommonUtil.dbUtil.open();
CommonUtil.dbHelper = new DbHelper(con);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
/*
* Get the values from CartRes Class
*
* */
if (null != mListener) {
mListener.onListFragmentInteraction(holder.cartRess);
} else{
Log.e("edgarrr","No Listner");
}
holder.cartRess = cartRes.get(position);
holder.prName.setText(cartRes.get(position).proname);
holder.prName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onListFragmentInteraction(holder.cartRess);
}
* */
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView prName, prate,prid,weight,itemid;
public CardView cardlist_item;
LinearLayout linearBG;
ImageView bgImage,imgCart,offer;
Spinner spinner1;
CartRes cartRess;
public ViewHolder(View itemView) {
super(itemView);
itemView.setClickable(true);
itemView.setOnClickListener(this);
cardlist_item = (CardView) itemView.findViewById(R.id.cardlist_item1);
prName = (TextView) itemView.findViewById(R.id.ShpName);
prate = (TextView) itemView.findViewById(R.id.rate);
linearBG = (LinearLayout) itemView.findViewById(R.id.linearBG);
bgImage = (ImageView) itemView.findViewById(R.id.imageView);
}
@Override
public void onClick(View view) {
mListener.onListFragmentInteraction(cartRess);
}
}
谁能帮我完成这个,我不知道我在哪里做错了。请指出我的错误,我尝试在这里搜索实现多种方式,onitem点击监听器想要在适配器的bindholder中实现
【问题讨论】:
-
代码看起来不错,能把触发监听器的代码贴出来吗?
标签: onitemclicklistener android-recyclerview