Java 回收器视图仅显示第一个项目,即使onBindViewHolder和onCreateViewHolder对所有项目都运行
正如标题所说 首先,Java 回收器视图仅显示第一个项目,即使onBindViewHolder和onCreateViewHolder对所有项目都运行,java,android,android-recyclerview,Java,Android,Android Recyclerview,正如标题所说 首先,onBindViewHolder仅对第一项运行。查看这个网站上的问题和答案确实表明,我需要将包装视图的高度设置为wrap\u content。这确实解决了第一个问题,现在logcat显示所有方法都正常运行;但是,仍然只显示第一个项目 为什么会发生这种情况,我该如何解决 火柴架(包含在火柴适配器中): 公共静态类MatchHolder扩展了RecyclerView.ViewHolder{ 私有最终文本视图m_textTime; 私人最终文本视图m_textDay; 私有最终文本
onBindViewHolder
仅对第一项运行。查看这个网站上的问题和答案确实表明,我需要将包装视图的高度设置为wrap\u content
。这确实解决了第一个问题,现在logcat显示所有方法都正常运行;但是,仍然只显示第一个项目
为什么会发生这种情况,我该如何解决
火柴架(包含在火柴适配器中):
公共静态类MatchHolder扩展了RecyclerView.ViewHolder{
私有最终文本视图m_textTime;
私人最终文本视图m_textDay;
私有最终文本视图m_textUsers;
公共MatchHolder(@NonNull View itemView){
超级(项目视图);
Log.d(“匹配回收器”,“视图:+itemView.toString());
m_textDay=itemView.findviewbyd(R.id.sc_sched_text_match_holder_day);
Log.d(“匹配回收器”,“日视图:+m_textDay.toString());
m_textTime=itemView.findViewById(R.id.sc_sched_text_match_holder_time);
Log.d(“匹配回收器”,“时间视图:+m_textTime.toString());
m_textTeams=itemView.findViewById(R.id.sc_sched_text_match_holder_users);
Log.d(“匹配回收器”,“用户视图:”+m_textUsers.toString());
}
公共void setMatch(上下文、搜索匹配){
LocalDateTime=match.getMatchTIme();
m_textDay.setText(time.format(模式的DateTimeFormatter.of(“dd/MM”));
m_textTime.setText(time.format(模式的DateTimeFormatter.of(“HH:mm”));
m_textTeams.setText(String.join(“,”,match.getTeams().stream().map(MatchTeam::getTeamNumber).map(String::valueOf).toArray(String[]::new));
}
}
匹配适配器:
公共类MatchAdapter扩展了RecyclerView.Adapter{
List m_data=new ArrayList();
语境m_语境;
公共匹配适配器(上下文、搜索匹配…数据){
m_context=上下文;
添加(数据);
}
@非空
@凌驾
public MatchHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
Log.i(“UI_事件”,“初始化匹配持有者”);
归还新的火柴架(
LayoutInflater.from(parent.getContext()).flate(
R.layout.holder\u匹配\u sc,父级,false
)
);
}
@凌驾
public void onBindViewHolder(@NonNull MatchHolder,int位置){
setMatch(m_上下文,m_数据.get(位置));
Log.i(“UI_事件”,“初始化匹配列表项:”+m_data.get(position.toString());
}
@凌驾
public int getItemCount(){
返回m_data.size();
}
公共无效添加(球探比赛…比赛){
int init=getItemCount();
m_data.addAll(Arrays.asList(matches));
for(int i=init;i
活动\u计划\u sc.xml(包含活动):
SC_ScheduleActivity.java(包含活动)
公共类SC_ScheduleActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u schedule\u sc);
RecyclerView matchListView=findViewById(R.id.sc\u rec\u sched\u main\u列表);
matchListView.setAdapter(
新匹配适配器(
这
新球探比赛(
新的MatchID(MatchID.MatchType.QUAL,1),
Arrays.asList(
新的比赛团队(1,“第一”,正确,“abc1”),
新的比赛团队(2,“第二优先”,正确,“abc2”),
新的比赛团队(3,“第三优先”,正确,“abc3”),
新的比赛团队(4,“第四名第一”,假,“abc4”),
新的比赛团队(5,“第五优先”,假,“abc5”),
新的比赛团队(6,“第六名第一”,假,“abc6”)
)
),
新球探比赛(
新的MatchID(MatchID.MatchType.QUAL,2),
Arrays.asList(
新的比赛团队(1,“第一”,正确,“abc1”),
新的比赛团队(5,“第五优先”,正确,“abc2”),
新的比赛团队(9,“第九优先”,正确,“abc3”),
新的比赛团队(4,“第四名第一”,假,“abc4”),
新的比赛团队(10,“第十名第一”,假,“abc5”),
新的比赛团队(11,“第十一优先”,假,“abc6”)
)
),
新球探比赛(
新的MatchID(MatchID.MatchType.季后赛,1),
Arrays.asList(
新的比赛团队(1,“第一”,正确,“abc1”),
新的MatchTeam(23,“23”,正确,“abc2”),
新的MatchTeam(30个“姓名”,正确的“abc3”),
新的比赛团队(34,“第四个30”,假,“abc4”),
新的比赛队(54分,“第五四”,假,“abc5”),
新的MatchTeam(69,“不错”,假,“abc6”)
)
)
)
);
androidx.constraintlayout.widget.ConstraintLayout