2016-11-29 65 views
0

我使用的是RecyclerViewLinearLayoutManager即是水平的。我每个视图显示3个项目并使用无限滚动。我的问题是,他们是3张图片,我希望中间图片被放大2倍,但我无法控制控制器来弄清楚,有没有办法做到这一点?Recyclerview无法控制视图

前)[] [] [] =一个观点,但中间的一个是2倍的规模和用户可以左右滚动

代码段: 这里是我的活动是如何初始化适配器:

LinearLayoutManager layout 
      = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false); 

    // constant data 
    constants = new Constants(); 
    recyclerView = (RecyclerView) findViewById(R.id.ModelCarousal); 
    recyclerView.setLayoutManager(layout); 
    recyclerView.setAdapter(new Model_Controller(getApplicationContext(), constants.Constants())); 
    recyclerView.addOnScrollListener(new EndlessScrollListener(layout) { 
     @Override 
     public void onLoadMore(int page, int totalItemsCount) { 
      // Triggered only when new data needs to be appended to the list 

     } 
    }); 

适配器:

public class Model_Controller extends RecyclerView.Adapter<Model_Controller.MyViewHolder> { 
Context mContext; 
List<Model> models; 
int[] img = new int[]{R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item 
      ,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item 
       ,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item,R.drawable.ic_item}; 

// view holder of badges 
public class MyViewHolder extends RecyclerView.ViewHolder { 
    public ImageView viewTwo; 

    public MyViewHolder(View view) { 
     super(view); 
     viewTwo = (ImageView) view.findViewById(R.id.model_child); 

    } 
} 

// constructor 
public Badge_Controller(Context c, List<Model> modelSet){ 
    mContext = c; 
    models = modelSet; 
} 

int height; 
int width; 
// returning the set of the holder for the child layout of badge view 
@Override 
public Model_Controller.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.model_child, parent, false); 
    height = parent.getMeasuredHeight() * 4; 
    width = parent.getWidth()*2; 
    return new MyViewHolder(itemView); 
} 

// what the user is seeing 
@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Helpers helpers = new Helpers(); 
     holder.viewTwo.setImageDrawable(mContext.getDrawable(img[position])); 
    } 
} 

// size 
@Override 
public int getItemCount() { 
    return models.size()+2; 
} 
@Override 
public int getItemViewType(int position) { 
    if (position == 0 || position == getItemCount()-1) { 
     return 1; 
    } 
    return 2; 
} 
} 
+1

你可以发布你的代码。 –

+0

好吧,我添加了它,对不起! – codeNinjaBro

回答

1

试试这个....

先在你的回收站适配器

private static final int TYPE_1X = 0; 
private static final int TYPE_2X = 1; 

声明常量获取Recyler项目的位置

​​

获取有关视图类型的viewtype和底座可以调整2X。

@Override 
public Model_Controller.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

final int type = viewType; 
View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.model_child, parent, false); 
    switch (type) { 
       case TYPE_1X: 
        height = parent.getMeasuredHeight()/2; 
        width = parent.getWidth()/2; 
        break; 
       case TYPE_2X: 
        height = parent.getMeasuredHeight() ; 
        width = parent.getWidth(); 
        break; 

      } 
    RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(
      width, //width 
      height);//height 
    itemView.setLayoutParams(lp); 
    return new MyViewHolder(itemView); 
} 
0

确定@Kiran Dsouza你的答案是正确的,我不得不改变相对布局PARAMS和它的作品为先初步意见,但是当我滚动水平和备份,因为它可以追溯到它不工作了它的原始视图。

+0

你没有设置LayoutParams的高度和宽度到视图我更新了代码,它应该是工作我没有找到任何如果你仍然觉得困难,请分享你的完整代码。它的工作原理是 –

+0

。谢谢 – codeNinjaBro

相关问题