过去三天我试图解决这个问题,但无济于事。我正在从连接在一起的两个数据库表中检索数据(表名是"类"和"部分")。问题由下面的图片描述。
每个学校班级(一年级,二年级等)应该为每个被点击的班级显示部分(一年级1A级,二级二级2A等)。但是从图像中,所有类都显示相同的(类部分),而不管被点击的类。
问题
如何让每个部分显示各自的课程? 非常感谢示例代码。如果有办法获取recyclerViewItem的Id并将其与类表中类名的Id匹配,我将非常感谢代码示例。
这是我在Adapter类的onBindViewHolder()
中所做的。我认为错误来自这里
@Override
public void onBindViewHolder(final ClassSectionOnSetupRecyclerAdapter.ViewHolderCSOS holder, final int position) {
holder.textView_classname_sections.setText(listClassesCSOS.get(position).getClasses_name());
holder.layoutt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
// still thinking on how to apply this(this gets the ItemId of the recyclerview Items)
long itemId = getRVItemId(position);
Log.i("itemId", String.valueOf(itemId));
if (holder.expandableCardView.isShown()) {
holder.expandableCardView.setVisibility(View.GONE);
} else {
holder.expandableCardView.setVisibility(View.VISIBLE);
if(itemId == listClassesCSOS.get(position).getId()) {
StringBuilder sb = new StringBuilder();
listClassesCSOS = demeaSQL.getAllSectionsByClassesID();
// not used yet
sectionsList = demeaSQL.getAllSections();
// getAllSections()
for (ClassesBean c : listClassesCSOS ){
sb.append(c.sectionBeanGetName() + "\n" + "\n");
// sets the textView with data from database after a class name has been clicked
holder.addedSectionTV.setText(sb.toString());
}
}
}
}
});
holder.add_class_section.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAddSectionsDialog();
}
});
}
答案 0 :(得分:0)
在持有人中调用demeaSQL.getAllSectionsByClassesID();
。您没有设置所选类的id
,因此每个类都会收到相同的值。
<强>更新强>
在demeaSQL
课程中,您需要新方法getAllSectionsByClassesID(long id)
然后改变
listClassesCSOS = demeaSQL.getAllSectionsByClassesID();
到
listClassesCSOS = demeaSQL.getAllSectionsByClassesID(itemId);