Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用回收器视图和卡片视图获取转盘的单击位置_Java_Android_Android Layout_Android Fragments - Fatal编程技术网

Java 使用回收器视图和卡片视图获取转盘的单击位置

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) {

我在用这个

我使用Recycler视图和Card视图创建了以下UI

在每个卡片视图中,我都添加了这个旋转木马视图,并在旋转木马中包含图像

此库具有
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();