1
レイアウトに複数のカードビューがあります。クリックするとListenerのonClickメソッドが呼び出され、EquationsActivityが開始され、カードの位置が渡されます。それは動作していません。私のrecyclerFragmentはtablayoutにあります。私は見て見て、私は問題を把握することができない!すべての提案は高く評価されています!リサイクラービューのカードビューでリスナーインターフェイスがonClickと連携していません
マイrecyclerAdapter:
public class recylcerAdapter extends RecyclerView.Adapter<recylcerAdapter.ViewHolder> {
private Listenerr listener;
private int[] imageIds;
private String[] nameArray;
public interface Listenerr{
void onClick(int position);
}
public static class ViewHolder extends RecyclerView.ViewHolder{
private CardView cardView;
public ViewHolder(CardView v){
super(v);
cardView = v;
}
}
public recylcerAdapter(Context context, String title, Cursor cursor, int[]imageIds, String[]nameArray){
this.imageIds = imageIds;
this.nameArray = nameArray;
}
public void setListener(Listenerr listener){
this.listener = listener;
}
@Override
public recylcerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
//create a new view
CardView cardView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_main, parent, false);
return new ViewHolder(cardView);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position){
//set the values inside the given view
CardView cardView = holder.cardView;
ImageView imageView = (ImageView) cardView.findViewById(R.id.list_icon);
Drawable drawable = cardView.getResources().getDrawable(imageIds[position]);
imageView.setImageDrawable(drawable);
imageView.setContentDescription(nameArray[position]);
TextView textView = (TextView) cardView.findViewById(R.id.card_text);
textView.setText(nameArray[position]);
cardView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if(listener != null){
Log.v("hitsOnClick", "It has been hit");
listener.onClick(position);
}
}
});
}
@Override
public int getItemCount(){
//return number of items in the data set
return nameArray.length;
}
}
マイリサイクルフラグメントコード:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
new listPop().execute();
RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.recylcler_layout, container, false);
recylcerAdapter RecylcerAdapter =
new recylcerAdapter(getActivity(), "Geometry", cursor, imageArray, names.toArray(new String[names.size()]));
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(RecylcerAdapter);
RecylcerAdapter.setListener(new recylcerAdapter.Listenerr() {
@Override
public void onClick(int position) {
Intent intent = new Intent(getActivity(), EquationsActivity.class);
intent.putExtra(EquationsActivity.POSITION, position);
getActivity().startActivity(intent);
}
});
return recyclerView;
}
EDIT: もっと見てと私はカードをタップしたときに、onbindviewholder中のonClickではないことを発見しましたヒットした。
を静的コンテキストこのエラーは、新しいビューホルダーを作成する場所で発生します。どのようにそれを修正する上で任意のアイデア? –
プライベートListenerリスナーを静的にして、それを実行しても、クリックがまだ機能しませんでした。 –
^^^^これらのコメントの問題を修正できますか?^ @anhtuannd –