Есть Fragment. Есть в нем RecyclerView прикрепленный снизу. Суть в том, что по задумке самый первый элемент должен занимать чуть больше места чем остальные. Его я увеличиваю в ViewHolder самого адаптера при отрисовке следующим образом:
public class myAdapter {
...
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
WeatherForDay weather = mWeathersList.get(position);
holder.mDayTextView.setText(weather.getDay());
//todo update iconManager
//need icon manager, with input -> String, output ->(R.drawable.icon) int
holder.mIconImageView.setImageResource(R.drawable.testicon1);
holder.mTempTextView.setText(weather.getTmp());
if (position == 0) {
if (isFirstBind) {
Log.d(DEBUG_TAG, "is first bind and first position");
holder.setBig();
isFirstBind = false;
}
}
}
...
public static class ViewHolder extends RecyclerView.ViewHolder { ...
public void setBig() {
LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) mRoundLayout.getLayoutParams();
int newHeight = (int) (param.height * 1.2f);
int newWidth = (int) (param.height * 1.2f);
param.height = newHeight;
param.width = newWidth;
mRoundLayout.setLayoutParams(param);
mRoundLayout.setBackgroundDrawable(createBigShape(newHeight));
}
private Drawable createBigShape(int newHW) {
GradientDrawable shape = new GradientDrawable();
shape.setShape(GradientDrawable.RECTANGLE);
shape.setCornerRadii(new float[]{newHW, newHW, newHW, newHW, newHW, newHW, newHW, newHW});
shape.setColor(mContext.getResources().getColor(R.color.weryDark));
shape.setStroke(1, mContext.getResources().getColor(R.color.weryDark));
return shape;
}
...
}
} Каким образом заставить выравниваться элементы не по верхнему краю, а по нижнему?
P.S. Так же возникает проблема в том что N-ный элемент тоже каким то образом отрисовывается "большим" (на одном устройстве с большим экраном N = 13, на малом экране N = 8)
P.S.2 Может есть какой то более оптимальный способ изменить какой либо элемент RecyclerView?

onBindViewHolder()) , поэтому у вас повторяется каждый N-ый элемент. Вы можете либо принудительно устанавливать состояние для каждого айтема - большой или маленький, но поскольку у вас еще айтемы разного вида, логичнее использовать инструмент адаптера, специально предназначенный для этого. getItemViewType() не только для хидера, а для любых случаев, когда в одном списке необходимы айтемы разного вида, они могут и чередоваться. – pavlofff Nov 17 '16 at 13:21getItemViewType()адаптер не переиспользует айтемы из разных типов между собой. – pavlofff Nov 17 '16 at 14:48