Android Carousel Layout With Customisation onClick() Events Not Working

1.1k views Asked by At

I am trying to implement Carousel Layout (Cover Flow) in my application. I got a working example by using below library.

implementation 'com.github.moondroid.coverflow:library:1.0'

Example Link: http://www.devexchanges.info/2015/11/making-carousel-layout-in-android.html

As far now its working fine. But when i am trying to customising the Carousel Layout to work on click events for each child in inflater xml file. But it is not supporting for click events on every child. It's worked on total item click event only.

I lost 2 days work for try to complete this. But it is still on same situation.

Can anyone solve my problem to save time.

Thanks in advance for the Help.

BaseAdapter Class:

public class CoverFlowAdapter extends BaseAdapter {

private ArrayList<Game> data;
private AppCompatActivity activity;

public CoverFlowAdapter(AppCompatActivity context, ArrayList<Game> objects) {
    this.activity = context;
    this.data = objects;
}

@Override
public int getCount() {
    return data.size();
}

@Override
public Game getItem(int position) {
    return data.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.item_flow_view, null, false);

        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.gameImage.setImageResource(data.get(position).getImageSource());
    viewHolder.gameName.setText(data.get(position).getName());
    viewHolder.gameName2.setText(data.get(position).getName());

    viewHolder.gameName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(activity, data.get(position).getName(), Toast.LENGTH_SHORT).show();
        }
    });

    viewHolder.gameName2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(activity, data.get(position).getName() + "Hello", Toast.LENGTH_SHORT).show();
        }
    });


    return convertView;
}

private View.OnClickListener onClickListener(final int position) {
    return new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final Dialog dialog = new Dialog(activity);
            dialog.setContentView(R.layout.dialog_game_info);
            dialog.setCancelable(true); // dimiss when touching outside
            dialog.setTitle("Game Details");

            TextView text = (TextView) dialog.findViewById(R.id.name);
            text.setText(getItem(position).getName());
            ImageView image = (ImageView) dialog.findViewById(R.id.image);
            image.setImageResource(getItem(position).getImageSource());

            dialog.show();
        }
    };
}


private static class ViewHolder {
    private Button gameName, gameName2;
    private ImageView gameImage;

    public ViewHolder(View v) {
        gameImage = (ImageView) v.findViewById(R.id.image);
        gameName = (Button) v.findViewById(R.id.name);
        gameName2 = (Button) v.findViewById(R.id.name2);
    }
}

}

0

There are 0 answers