Java 使用回收器视图和卡片视图获取转盘的单击位置
我在用这个 我使用Recycler视图和Card视图创建了以下UI 在每个卡片视图中,我都添加了这个旋转木马视图,并在旋转木马中包含图像 此库具有Java 使用回收器视图和卡片视图获取转盘的单击位置,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我在用这个 我使用Recycler视图和Card视图创建了以下UI 在每个卡片视图中,我都添加了这个旋转木马视图,并在旋转木马中包含图像 此库具有setImageClickListener,它提供每个卡视图中每个单击图像的索引 customCarouselView.setImageClickListener(new ImageClickListener() { @Override public void onClick(int position) {
setImageClickListener
,它提供每个卡视图中每个单击图像的索引
customCarouselView.setImageClickListener(new ImageClickListener() {
@Override
public void onClick(int position) {
Toast.makeText(SampleCarouselViewActivity.this, "Clicked item: "+ position, Toast.LENGTH_SHORT).show();
}
});
我想知道单击了哪个图像以及该图像属于哪个卡,因为有多个卡视图
我尝试在ImageView中注册click事件,并使用getAdapterPosition()
获取clicked cardview的adapterPosition
当两个事件都注册后,只会点击ImageView(fruitImageView.setOnClickListener
),这会给出适配器的位置。我还想知道点击了哪个图像
当我删除此ImageView时,单击listener,然后旋转视图单击customCarouselView。点击setImageClickListener,它给出了单击的图像的位置,而不是适配器的位置
这方面有什么办法吗?请帮忙
我的适配器类完整代码:
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {
private ArrayList<HomeSalesModel> salesLists;
int[] sampleImages = {R.drawable.album1, R.drawable.album2, R.drawable.album3, R.drawable.album4, R.drawable.album5};
String[] sampleTitles = {"A", "B", "C", "D", "E"};
Context myContext = null;
public GridAdapter(ArrayList<HomeSalesModel> salesLists) {
this.salesLists = salesLists;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
myContext = parent.getContext();
return new ViewHolder(LayoutInflater.from(parent.getContext()), parent);
}
@Override
public void onBindViewHolder(GridAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv_country.setText(salesLists.get(i).getTitle());
}
@Override
public int getItemCount() {
return salesLists.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CarouselView customCarouselView;
private TextView tv_country;
private CardView cardView;
public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
super(inflater.inflate(R.layout.grid_card_row, parent, false));
tv_country = (TextView) itemView.findViewById(R.id.tv_country);
customCarouselView = (CarouselView) itemView.findViewById(R.id.customCarouselView);
cardView = (CardView) itemView.findViewById(R.id.card);
customCarouselView.setPageCount(sampleImages.length);
//customCarouselView.setSlideInterval(4000);
customCarouselView.setViewListener(viewListener);
customCarouselView.setImageClickListener(imageClickListner);
}
ViewListener viewListener = new ViewListener() {
@Override
public View setViewForPosition(int position) {
LayoutInflater li = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customView = li.inflate(R.layout.view_custom, null);
TextView labelTextView = (TextView) customView.findViewById(R.id.labelTextView);
ImageView fruitImageView = (ImageView) customView.findViewById(R.id.fruitImageView);
fruitImageView.setImageResource(sampleImages[position]);
labelTextView.setText(sampleTitles[position]);
fruitImageView.setOnClickListener(new View.OnClickListener() { /*Works when another click event (imageClickListner) is not registered*/
@Override
public void onClick(View view) {
int a = getAdapterPosition(); //gives the index cardview position.
}
});
//labelTextView.setText(salesLists.get(position).getProducts().get(position).getSlug());
return customView;
}
};
ImageClickListener imageClickListner = new ImageClickListener() {
@Override
public void onClick(int position) {
Toast.makeText(myContext, "Clicked item: " + position, Toast.LENGTH_SHORT).show(); //gives index the clicked image.
}
};
}
}
公共类GridAdapter扩展了RecyclerView.Adapter{
私有ArrayList销售列表;
int[]sampleImages={R.drawable.album1,R.drawable.album2,R.drawable.album3,R.drawable.album4,R.drawable.album5};
字符串[]sampleTitles={“A”、“B”、“C”、“D”、“E”};
Context myContext=null;
公共GridAdapter(ArrayList SalesList){
this.salesLists=salesLists;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
myContext=parent.getContext();
返回新的ViewHolder(LayoutInflater.from(parent.getContext()),parent);
}
@凌驾
public void onBindViewHolder(GridAdapter.ViewHolder ViewHolder,int i){
viewHolder.tv_country.setText(salesLists.get(i.getTitle());
}
@凌驾
public int getItemCount(){
return salesLists.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
私人转盘视图customCarouselView;
国家/地区的私人文本视图电视;
私人卡视图卡视图;
公共视口保持架(更平坦的充气器、视口组父视图){
super(充气机。充气(R.layout.grid\u card\u row,父级,false));
tv_country=(TextView)itemView.findviewbyd(R.id.tv_country);
customCarouselView=(CarouselView)itemView.findviewbyd(R.id.customCarouselView);
cardView=(cardView)itemView.findViewById(R.id.card);
customCarouselView.setPageCount(sampleImages.length);
//自定义旋转视图设置滑动间隔(4000);
CustomCarouseView.setViewListener(viewListener);
customCarouselView.setImageClickListener(ImageClickListener);
}
ViewListener ViewListener=新的ViewListener(){
@凌驾
公共视图setViewForPosition(内部位置){
LayoutInflater li=(LayoutInflater)myContext.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
视图自定义视图=li.充气(R.layout.View\u custom,null);
TextView labelTextView=(TextView)customView.findViewById(R.id.labelTextView);
ImageView fruitImageView=(ImageView)customView.findViewById(R.id.fruitImageView);
setImageResource(sampleImages[position]);
labelTextView.setText(示例标题[位置]);
当未注册另一个单击事件(ImageClickListener)时,FrootImageView.setOnClickListener(新视图.OnClickListener(){/*工作*/
@凌驾
公共void onClick(视图){
int a=getAdapterPosition();//给出索引cardview位置。
}
});
//labelTextView.setText(salesLists.get(position.getProducts().get(position.getSlug());
返回自定义视图;
}
};
ImageClickListener ImageClickListener=新建ImageClickListener(){
@凌驾
公共void onClick(内部位置){
Toast.makeText(myContext,“单击的项:“+position,Toast.LENGTH_SHORT).show();//为单击的图像提供索引。
}
};
}
}
只需在
ImageClickListener
中获取适配器位置即可
int postion = getAdapterPosition();
int postion = getAdapterPosition();