Recycle View 를 사용 하여 격자 레이아웃 을 만 듭 니 다.

GridView 대신 Recycleview 를 사용 하여 격자 레이아웃 을 만 들 었 으 나 recycleview 는 item 의 클릭 이 벤트 를 제공 하지 않 았 고 adapter 에서 클릭 이 벤트 를 만 들 었 습 니 다.recycleview 는 listview 와 gridview 보다 더욱 유연 하고 성능 이 최적화 되 었 습 니 다.
다음은 activity 에 있 는 코드 입 니 다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view=inflater.inflate(R.layout.fragment_find, container, false);
    recyclerView= (RecyclerView) view.findViewById(R.id.fm_find_recycle);
    List<FindBean> list=new ArrayList<>();	//  bean     
    list.add(new FindBean(R.drawable.head_zhibo,"  "));
    list.add(new FindBean(R.drawable.head_tieba,"  "));

    FindAdapter adapter=new FindAdapter(list,getActivity());
    recyclerView.setAdapter(adapter);		// gridview    setAdapter
    recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),3)); //          ,  3      

    return view;
}

다음은 adapter 코드 입 니 다.
public class FindAdapter extends RecyclerView.Adapter{
    private List<FindBean> list;
    private Context context;

    public FindAdapter(List<FindBean> list, Context activity) {
        this.list=list;
        this.context=activity;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {			//    return  holder  ,   item view
        return new HalderViewHolder(LayoutInflater.from(context).inflate(R.layout.find_item,null));
    }

    @Override		
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {			//      UI   
        ((HalderViewHolder)holder).iv.setImageResource(list.get(position).getHead());
        ((HalderViewHolder)holder).tv.setText(list.get(position).getName());				//  RecycleView     item     ,   
        ((HalderViewHolder)holder).item.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                context.startActivity(new Intent(context, ZhiBoActivity.class));
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    class HalderViewHolder extends RecyclerView.ViewHolder{	//holder   RecycleView      gridview  
        @ViewInject(R.id.find_item_iv)
        private ImageView iv;
        @ViewInject(R.id.find_item_tv)
        private TextView tv;
        @ViewInject(R.id.find_item_item)
        private LinearLayout item;

        public HalderViewHolder(View itemView) {
            super(itemView);
            ViewUtils.inject(this,itemView);
        }

    }
}

다음은 XML 의 코드 입 니 다.
    android:id="@+id/fm_find_recycle"
    android:layout_marginTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"/>

이렇게 하면 OK 입 니 다.이것 은 초급 demo 일 뿐 입 니 다.recycleview 는 아직도 실현 할 수 있 는 많은 레이아웃 이 있 습 니 다.기본적으로 list 와 grid 를 대체 할 수 있어 서 매우 좋 습 니 다.

좋은 웹페이지 즐겨찾기