Android 同步滚动不同宽度的RecyclerViews
我有一个应用程序,存储一些到期日期,并在main活动中显示它们 我正在努力完成第一张图片上的内容,但我还没有完成 到目前为止,我得到的是: 我的问题:Android 同步滚动不同宽度的RecyclerViews,android,android-recyclerview,android-adapter,Android,Android Recyclerview,Android Adapter,我有一个应用程序,存储一些到期日期,并在main活动中显示它们 我正在努力完成第一张图片上的内容,但我还没有完成 到目前为止,我得到的是: 我的问题: 单击右键或左键时,如何剪辑第一个RecyclerView?(解决此问题后,我将制作更改背景颜色和粗体文本的动画) 单击时如何同步两个RecyclerViews以更改到所需位置 这就是我尝试过的: 这些工作或多或少,在第一个环节我设法得到了这个职位,但不知道该如何处理这个职位;在第二个链接上,它确实同步,但我需要在单击时滚动到位置旁
- 单击右键或左键时,如何剪辑第一个RecyclerView?(解决此问题后,我将制作更改背景颜色和粗体文本的动画)
- 单击时如何同步两个RecyclerViews以更改到所需位置
public class Home extends BaseActivity {
private DBHelper mDBHelper;
private Context mContext;
private RecyclerView mRecyclerViewDetails, mRecyclerViewSymbols;
private HomeDetailsAdapter mDetailsAdapter;
private HomeSymbolsAdapter mSymbolsAdapter;
private LinearLayoutManager mLinearLayoutManager;
private LinearLayoutPagerManager mLinearLayoutPagerManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
super.onCreateDrawer();
mDBHelper = new DBHelper(getApplicationContext());
mRecyclerViewDetails = (RecyclerView) findViewById(R.id.recycler_view_details);
mRecyclerViewSymbols = (RecyclerView) findViewById(R.id.recycler_view_symbols);
mSymbolsAdapter = new HomeSymbolsAdapter(mContext, mDBHelper.getAllDates(), new HomeSymbolsAdapter.clickCallback() {
@Override
public void onItemClick(int position) {
mRecyclerViewSymbols.scrollToPosition(position);
Log.d("Home", String.valueOf(position));
}
});
mRecyclerViewSymbols.setAdapter(mSymbolsAdapter);
mLinearLayoutPagerManager = new LinearLayoutPagerManager(mContext, LinearLayoutManager.HORIZONTAL, false, 3);
mRecyclerViewSymbols.setLayoutManager(mLinearLayoutPagerManager);
mRecyclerViewSymbols.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2);
mDetailsAdapter = new HomeDetailsAdapter(mContext, mDBHelper.getAllDates());
mRecyclerViewDetails.setAdapter(mDetailsAdapter);
mLinearLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false);
mRecyclerViewDetails.setLayoutManager(mLinearLayoutManager);
mRecyclerViewDetails.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2);
PagerSnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(mRecyclerViewDetails);
PagerSnapHelper snapHelper2 = new PagerSnapHelper();
snapHelper2.attachToRecyclerView(mRecyclerViewSymbols);
}
家庭符号适配器
public class HomeSymbolsAdapter extends RecyclerView.Adapter<HomeSymbolsAdapter.ViewHolder> {
private Context mContext;
private DBHelper mDBHelper;
private ArrayList<Date> mDatesList;
private clickCallback mClickCallback;
private final static int ITEMS_PER_PAGE = 3;
public HomeSymbolsAdapter(Context context, ArrayList<Date> datesList, clickCallback clickCallback) {
mContext = context;
mDatesList = datesList;
mClickCallback = clickCallback;
}
public interface clickCallback{
void onItemClick(int position);
}
@Override
public HomeSymbolsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.format_home_symbols, parent, false));
}
@Override
public void onBindViewHolder(HomeSymbolsAdapter.ViewHolder holder, int position) {
int positionInList = position % mDatesList.size();
Date date = mDatesList.get(positionInList);
holder.mSymbol.setText(date.getSymbol());
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mSymbol;
public ViewHolder(View view) {
super(view);
mSymbol = (TextView) view.findViewById(R.id.symbols_tv);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mClickCallback.onItemClick(getAdapterPosition());
}
});
}
}
public class HomeDetailsAdapter extends RecyclerView.Adapter<HomeDetailsAdapter.ViewHolder> {
private Context mContext;
private ArrayList<Date> mDates;
public HomeDetailsAdapter(Context context, ArrayList<Date> dates) {
mContext = context;
mDates = dates;
}
@Override
public HomeDetailsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.format_home, parent, false));
}
@Override
public void onBindViewHolder(HomeDetailsAdapter.ViewHolder holder, int position) {
int positionInList = position % mDates.size();
Date date = mDates.get(positionInList);
holder.mName.setText(date.getName());
holder.mDaysLeft.setText("125");
holder.mDays.setText(R.string.days);
holder.mDate.setText(date.getDate());
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView mName, mDaysLeft, mDays, mDate;
public ViewHolder(View view) {
super(view);
mName = (TextView) view.findViewById(R.id.format_home_name);
mDaysLeft = (TextView) view.findViewById(R.id.format_home_days_left);
mDays = (TextView) view.findViewById(R.id.format_home_days);
mDate = (TextView) view.findViewById(R.id.format_home_date);
}
}
公共类HomeSymbolsAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人助理医生;
私有ArrayList mDatesList;
私有clickCallback mClickCallback;
私人最终静态整数项每页=3;
公共HomeSymbolsAdapter(上下文上下文、ArrayList日期列表、clickCallback clickCallback){
mContext=上下文;
mDatesList=日期列表;
mClickCallback=单击回调;
}
公共接口clickCallback{
无效单击(内部位置);
}
@凌驾
public HomeSymbolsAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
返回新的ViewHolder(LayoutInflater.from(parent.getContext())。充气(R.layout.format_home_symbols,parent,false));
}
@凌驾
BindViewHolder上的公共无效(HomeSymbolsAdapter.ViewHolder,int位置){
int positionInList=位置%mDatesList.size();
Date-Date=mDatesList.get(位置列表);
holder.mSymbol.setText(date.getSymbol());
}
@凌驾
public int getItemCount(){
返回Integer.MAX_值;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图mSymbol;
公共视图持有者(视图){
超级(视图);
mSymbol=(TextView)view.findviewbyd(R.id.symbols\u tv);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
mClickCallback.onItemClick(getAdapterPosition());
}
});
}
}
HomeDetailsAdapter
public class HomeSymbolsAdapter extends RecyclerView.Adapter<HomeSymbolsAdapter.ViewHolder> {
private Context mContext;
private DBHelper mDBHelper;
private ArrayList<Date> mDatesList;
private clickCallback mClickCallback;
private final static int ITEMS_PER_PAGE = 3;
public HomeSymbolsAdapter(Context context, ArrayList<Date> datesList, clickCallback clickCallback) {
mContext = context;
mDatesList = datesList;
mClickCallback = clickCallback;
}
public interface clickCallback{
void onItemClick(int position);
}
@Override
public HomeSymbolsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.format_home_symbols, parent, false));
}
@Override
public void onBindViewHolder(HomeSymbolsAdapter.ViewHolder holder, int position) {
int positionInList = position % mDatesList.size();
Date date = mDatesList.get(positionInList);
holder.mSymbol.setText(date.getSymbol());
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mSymbol;
public ViewHolder(View view) {
super(view);
mSymbol = (TextView) view.findViewById(R.id.symbols_tv);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mClickCallback.onItemClick(getAdapterPosition());
}
});
}
}
public class HomeDetailsAdapter extends RecyclerView.Adapter<HomeDetailsAdapter.ViewHolder> {
private Context mContext;
private ArrayList<Date> mDates;
public HomeDetailsAdapter(Context context, ArrayList<Date> dates) {
mContext = context;
mDates = dates;
}
@Override
public HomeDetailsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.format_home, parent, false));
}
@Override
public void onBindViewHolder(HomeDetailsAdapter.ViewHolder holder, int position) {
int positionInList = position % mDates.size();
Date date = mDates.get(positionInList);
holder.mName.setText(date.getName());
holder.mDaysLeft.setText("125");
holder.mDays.setText(R.string.days);
holder.mDate.setText(date.getDate());
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView mName, mDaysLeft, mDays, mDate;
public ViewHolder(View view) {
super(view);
mName = (TextView) view.findViewById(R.id.format_home_name);
mDaysLeft = (TextView) view.findViewById(R.id.format_home_days_left);
mDays = (TextView) view.findViewById(R.id.format_home_days);
mDate = (TextView) view.findViewById(R.id.format_home_date);
}
}
公共类HomeDetailsAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人ArrayList mDates;
公共HomeDetailsAdapter(上下文、数组列表日期){
mContext=上下文;
日期=日期;
}
@凌驾
public HomeDetailsAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
返回新的ViewHolder(LayoutInflater.from(parent.getContext()).flate(R.layout.format_home,parent,false));
}
@凌驾
BindViewHolder上的公共无效(HomeDetailsAdapter.ViewHolder,int位置){
int positionInList=位置%mDates.size();
日期=mDates.get(位置列表);
holder.mName.setText(date.getName());
持有人.mDaysLeft.setText(“125”);
holder.mDays.setText(R.string.days);
holder.mDate.setText(date.getDate());
}
@凌驾
public int getItemCount(){
返回Integer.MAX_值;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图mName、mDaysLeft、mDays、mDate;
公共视图持有者(视图){
超级(视图);
mName=(TextView)view.findViewById(R.id.format\u home\u name);
mDaysLeft=(TextView)view.findViewById(R.id.format\u home\u days\u left);
mDays=(TextView)view.findViewById(R.id.format\u home\u days);
mDate=(TextView)view.findViewById(R.id.format\u home\u date);
}
}