【发布时间】:2019-02-22 10:42:47
【问题描述】:
我无法在我的应用程序中获取业务逻辑之一。 谁能帮帮我,我是android开发的新手。
顺便说一句,我正在使用 android recyclerview 显示项目列表,我需要显示已经检查的项目已标记为签入 recyclerview。
我正在从服务器获取检查项目: InterestsList:["古董-收藏","工艺品","划船"]
这些项目需要与我的 recyclerView ArrayList 或 Items 进行比较,如果这些项目在 recyclerview 中可用,我需要显示为选中的项目。
我怎样才能为此编写简单的逻辑?
strings ArrayList 包含 Recycler 物品列表数据,InterestsList 是被检查物品列表数据。
这是我的适配器类:
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvInterestName.setText(interests.get(position).getInterest().toString());
List<String> strings = new ArrayList<>(interests.size());
for (Interest object : interests) {
strings.add(Objects.toString(object, null));
}
interestList = model.getInterests();
System.out.println("LISTTTTTT @@@"+strings.toString());
System.out.println("LISTTTTTT @@@"+interestList.size());
for (int i = 0; i < strings.size(); i++) {
for (int j = 0; j < interestList.size(); j++) {
if(strings.get(i).equalsIgnoreCase(interestList.get(j))) {
holder.checkBox.setChecked(true);
}
else
holder.checkBox.setChecked(false);
}
}
//in some cases, it will prevent unwanted situations
holder.checkBox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkBox.setChecked(interests.get(position).isSelected());
holder.cell.setOnClickListener(v ->
{
holder.checkBox.performClick();
});
if (interests.get(position).isSelected()) {
holder.checkBox.setChecked(true);
} else {
holder.checkBox.setChecked(false);
}
holder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) ->
{
guestListener.OnMultipleGuestListener(position, isChecked);
});
}
在我的活动类中使用的多个选择项接口侦听器:
@Override
public void OnMultipleGuestListener(int position, boolean isChecked) {
interestList.get(position).setSelected(isChecked);
interestsAdapter.notifyDataSetChanged();
}
【问题讨论】:
-
这里似乎有些混乱。请确认几件事。 “interests”是 List
,其中 Interest 是对象(onBindViewHolder 中的第一行),list 是所有兴趣的列表,而 model.getInterests 是所选兴趣的 List 。正确的??如果是,OnMultipleGuestListener 接口的第一行是什么意思 -
Interests 是 List
,它在适配器类中具有所有/全部兴趣项。 OnMultipleGuestListener 接口第一行中的interestList 是我保存到此列表中并发送到我的服务器的所选项目的新数组列表。它是根据我从将添加到列表的回收站项目中选择的位置添加的。跨度>