请教一下下面的UI怎么实现:主界面是一个RecyclerView,item里面有个ViewPager,默认item中ViewPager是收缩状态且不可滑动,点击后展开显示完整的ViewPager并且可以滑动,如图
解决方案 »
- 关于读取email数据库德权限问题
- 关于Activity转换时出现的诡异奇特的问题,求大神给小妹点指导~
- 求助,关于动态添加删除TableRow
- emulator 和QQ的兼容问题
- 自己设置分辨可是运行到其中一个Activity时出现 IllegalstateException异常???
- Android 开发如何处理网络异常?
- 新手求解
- Android (&Tizen) Web App SDK 支持Tizen与Android Hybird/Web App相互转化
- Android即时通讯与IOS端发送语音的问题。
- QQ微信等能识别是否常登录设备,请问这个是记录手机哪个信息分析的?
- 用c++写安卓程序,怎么进行编码转换,GBK和UTF-8互相转换
- 关于ListView嵌套GridView的奇葩问题
每个item右边那部分就是一个ViewPager,ViewPager里第一页是当前天气预览,第二页是当天不同时段天气预报,第三天是未来七天天气预报
那我试着写个简单的例子,写完给你
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>