在我的項目,我需要根據來自web服務的響應添加ImageView
不同數量的每行,我能做到這一點,但我滾動從行重複的recyclerView
的ImageView
本身。的Android - RecyclerView地重複編程添加imageviews
我的應用程序的想法是能夠創建和分享組合(輸入視頻遊戲的設置)。這是我的適配器代碼。
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_COMBO) {
View row = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent,false);
ComboViewHolder comboViewHolder = new ComboViewHolder(row);
return comboViewHolder;
} else {
View row = LayoutInflater.from(parent.getContext()).inflate(R.layout.progress_footer, parent, false);
FooterViewHolder footerViewHolder = new FooterViewHolder(row);
return footerViewHolder;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ComboViewHolder) {
ComboViewHolder comboViewHolder = (ComboViewHolder) holder;
ComboImp comboImp = (ComboImp) data.get(position);
ComboConverter comboConverter = new ComboConverter();
comboConverter.convertToPS4(comboImp.getCombo());
LinearLayout LinearLayout = new LinearLayout(mContext);
LinearLayout.LayoutParams imageViewParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int[] comboItems = comboConverter.convertToPS4(comboImp.getCombo());
PairingFunction pairingFunction = new PairingFunction();
for (int i = 0; i < comboItems.length; i++) {
int id = pairingFunction.pair(i + 1, position + 1);
comboViewHolder.imageView = new ImageView(mContext);
comboViewHolder.imageView.setId(id);
comboViewHolder.imageView.setImageResource(0);
comboViewHolder.imageView.setLayoutParams(imageViewParams);
comboViewHolder.imageView.setImageResource(comboConverter.getPs4Picture(Control.getByCode(comboItems[i])));
linearLayout.addView(comboViewHolder.imageView);
}
comboViewHolder.linearLayout.addView(linearLayout);
}
}
@Override
public int getItemCount() {
return data.size();
}
public static class ComboViewHolder extends RecyclerView.ViewHolder{
private TextView combo,postDate;
private View circleView;
private LinearLayout linearLayout;
private ImageView imageView;
public ComboViewHolder(View itemView) {
super(itemView);
linearLayout = (LinearLayout)itemView.findViewById(R.id.LinearRow);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageView.setImageResource(R.drawable.ps4_square_30x30);
}
});
}
public TextView getCombo() {
return combo;
}
public TextView getPostDate() {
return postDate;
}
public View getCircleView() {
return circleView;
}
public View getImageView() {
return imageView;
}
public LinearLayout getLinearLayout(){return linearLayout;}
}
至於XML文件是一個簡單的LinearLayout,它沒有任何內容。
我用的配對功能可爲創建的每個ImageView
一個唯一的ID,它並不是完美的(有足夠的行和ImageView
整數會最大程度的發揮),但現在
很高興它幫助@AlexanderJimenez。請提出答案。謝謝 –
對不起,我嘗試了,但是我的聲望還不夠高(低於15),以至於我的投票反映了分數 –