recycleView 多佈局加載
package soexample.umeng.com.recycleview_demo_day13.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import soexample.umeng.com.recycleview_demo_day13.R;
import soexample.umeng.com.recycleview_demo_day13.bean.BeautyBean;
/**
* RecyclerView多佈局首先
* 1:extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder用它提供的
*/
public class MoreAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
private ArrayList<BeautyBean> mList;
private final int ONE_ITEM = 1;
private final int TWO_ITEM = 2;
public MoreAdapter(ArrayList<BeautyBean> mList) {
this.mList = mList;
}
//參數2就是佈局type類型
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = null;
RecyclerView.ViewHolder holder = null;
switch (viewType) {
case ONE_ITEM:
view = View.inflate(viewGroup.getContext(), R.layout.recy_item_one, null);
holder = new OneHolder(view);
break;
case TWO_ITEM:
view = View.inflate(viewGroup.getContext(), R.layout.recy_item_two, null);
holder = new TwoHolder(view);
break;
}
view.setOnClickListener(this);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
BeautyBean bean = mList.get(i);
//判斷前一個參數是否是後一個參數的一個實例
if (viewHolder instanceof OneHolder) {
((OneHolder) viewHolder).mName.setText(bean.getName());
// ((OneHolder) viewHolder).itemView.setTag(i);
} else {
((TwoHolder) viewHolder).mImage.setImageResource(bean.getImage());
// ((TwoHolder) viewHolder).itemView.setTag(i);
}
viewHolder.itemView.setTag(i);
}
@Override
public int getItemCount() {
return mList.size();
}
//顯示幾種佈局
@Override
public int getItemViewType(int position) {
if (position % 2 == 1) {
return ONE_ITEM;
} else {
return TWO_ITEM;
}
}
class OneHolder extends RecyclerView.ViewHolder {
private TextView mName;
public OneHolder(@NonNull View itemView) {
super(itemView);
mName = itemView.findViewById(R.id.One_Text);
}
}
class TwoHolder extends RecyclerView.ViewHolder {
private ImageView mImage;
public TwoHolder(@NonNull View itemView) {
super(itemView);
mImage = itemView.findViewById(R.id.Two_Image);
}
}
public interface ItemClick {
void setOnItem(View v, int position);
}
private ItemClick itemClick;
public void setOnItemClick(ItemClick itemClick) {
this.itemClick = itemClick;
}
@Override
public void onClick(View v) {
if (itemClick != null) {
itemClick.setOnItem(v, (int) v.getTag());
}
}
}
package soexample.umeng.com.recycleview_demo_day13;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import java.util.ArrayList;
import soexample.umeng.com.recycleview_demo_day13.adapter.MoreAdapter;
import soexample.umeng.com.recycleview_demo_day13.bean.BeautyBean;
public class MoreItemDemoActivity extends AppCompatActivity {
private ArrayList<BeautyBean> mList = new ArrayList<>();
private RecyclerView mRecy;
private MoreAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_demo);
initViews();
initData();
mAdapter = new MoreAdapter(mList);
mRecy.setAdapter(mAdapter);
mAdapter.setOnItemClick(new MoreAdapter.ItemClick() {
@Override
public void setOnItem(View v, int position) {
Toast.makeText(MoreItemDemoActivity.this, mList.get(position).getName() + "", Toast.LENGTH_SHORT).show();
}
});
}
private void initData() {
for (int i = 0; i < 20; i++) {
mList.add(new BeautyBean("item:" + i, R.mipmap.xingan));
}
}
private void initViews() {
mRecy = findViewById(R.id.More_Recy);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mRecy.setLayoutManager(layoutManager);
}
}