Q:

Как сделать обработчик нажатий на CardView, созданные программно

Подскажите, как сделать обработчик нажатий на CardView, созданные программно. Они расположены не подряд списком, а располагаются в RelativeLayout под нужными элементами.
Загружаю их лоадером
ArrayList<CardView> card = new ArrayList<CardView>();
int count;

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    count = 0;
    if (cursor.moveToFirst()) {
        do {
            //здесь считываю данные и расчитываю на какой высоте выставлять
            card.add((CardView)cv.findViewById(R.id.cardview));
            card.get(count).getLayoutParams().height = здесь высота
            card.get(count).setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //отсюда запускаю фрагмент с описанием этой cardview
                }
            });
            ++count;
        } while (cursor.moveToNext());
    }
}

в итоге выход за пределы (invalid index)

A:

Программно View создаются либо конструктором:
  View view = new View(context);

либо из xml с помощью LayoutInflater:
  View view = LayoutInflater.from(context).inflate(R.layout.filename, root);

