80,351
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ArrayList<MyEntity> myData;
public int index = -1;
MyPagerAdapter mMyPagerAdapter;
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
initData();
//MyLayoutManager layoutManager = new MyLayoutManager(MyLayoutManager.VERTICAL);
adapter = new MyAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
recyclerView.setAdapter(adapter);
List<View> viewList = new ArrayList<View>();
LayoutInflater layoutInflater = getLayoutInflater();
View view1 = layoutInflater.inflate(R.layout.page1, null);
View view2 = layoutInflater.inflate(R.layout.page2, null);
View view3 = layoutInflater.inflate(R.layout.page3, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
mMyPagerAdapter = new MyPagerAdapter(viewList);
}
//初始化数据
private void initData() {
int size = 30;
myData = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
MyEntity e = new MyEntity();
e.setStr("str:" + i);
myData.add(e);
}
}
//自定义Adapter
class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@Override
public int getItemViewType(int position) {
if (position == index) {
return 1001;
}
return super.getItemViewType(position);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == 1001) {
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.recycler_item_viewpager, parent, false);
RecyclerView.ViewHolder viewHolder = new TwoViewHolder(v);
return viewHolder;
}
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.recycler_view_item, parent, false);
RecyclerView.ViewHolder viewHolder = new MyViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (position == index) {
return ;
}
MyEntity myEntity = myData.get(position);
MyViewHolder viewHolder = (MyViewHolder) holder;
viewHolder.setStr(myEntity.getStr());
}
@Override
public int getItemCount() {
return myData.size();
}
}
//自定义Holder
class MyViewHolder extends RecyclerView.ViewHolder {
private TextView strTv;
public MyViewHolder(View itemView) {
super(itemView);
strTv = (TextView) itemView.findViewById(R.id.str);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
index = getPosition();
adapter.notifyItemChanged(index);
}
});
}
public void setStr(String str) {
strTv.setText(str);
}
}
class TwoViewHolder extends RecyclerView.ViewHolder {
private ViewPager mViewPager;
public TwoViewHolder(View itemView) {
super(itemView);
mViewPager = (ViewPager) itemView.findViewById(R.id.vp);
mViewPager.setAdapter(mMyPagerAdapter);
}
}
private class MyPagerAdapter extends PagerAdapter {
private List<View> mViewList;
MyPagerAdapter(List<View> viewList) {
mViewList = viewList;
}
@Override
public int getCount() {
return mViewList.size();
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == mViewList.get((int)Integer.parseInt(object.toString()));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = mViewList.get(position);
container.addView(view);
return position;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViewList.get(position));
}
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v7.widget.RecyclerView>
VIewPager三个view
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0000">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="page1"
android:textColor="#ffffff"
android:textSize="20sp" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff00ff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="page2"
android:textColor="#ffffff"
android:textSize="20sp" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="page3"
android:textColor="#ffffff"
android:textSize="20sp" />
</RelativeLayout>