在我的应用程序中,用户可以选择一种音乐类型,然后显示该特定类型的音乐。音乐类别显示在水平的回收站视图中。选择一个类别后,该特定类别将突出显示。现在,我想要一个代码,其中突出显示最新的提要/类别,同时取消突出显示较旧的提要/类别。
现在,我可以使用存储所选择的提要位置的静态整数(例如categoryPosition)来跟踪旧的选定提要。 现在,当我在最新提要的itemView中时,我找不到使用categoryPosition跟踪旧提要并取消突出显示它的方法。
以下是一些相关的代码:
@Override
protected void populateViewHolder(final CategoryViewHolder viewHolder, final CategoryBlog model, final int position) {
//some other code
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//UNHIGHLIGHTING OLD FEED WITH categoryPosition WHERE I NEED HELP.
categoryPosition = position; //set categoryPosition to newly selected feed.
if(model.getName().equals(categorykey))
{
//highlightening part which I have done successfully
}
}
});
答案 0 :(得分:1)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let dataIndex = indexPath.row - 1
guard let cell1 = tableView.dequeueReusableCell(withIdentifier: "cell1") else {return UITableViewCell()}
func generateRandomColor() -> UIColor {
let redValue = CGFloat(drand48())
let greenValue = CGFloat(drand48())
let blueValue = CGFloat(drand48())
let randomColor = UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: 1.0)
return randomColor
}
if indexPath.row == 0 {
if tableViewData[indexPath.section].opened == false {
tableViewData[indexPath.section].opened = false
cell1.textLabel?.text = tableViewData[indexPath.section].title
cell1.textLabel?.numberOfLines = 0
cell1.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell1.textLabel?.font = UIFont.systemFont(ofSize: 18)
cell1.backgroundColor = UIColor.clear
return cell1
}
else if tableViewData[indexPath.section].opened == true {
tableViewData[indexPath.section].opened = true
cell1.textLabel?.text = tableViewData[indexPath.section].title
cell1.textLabel?.numberOfLines = 0
cell1.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell1.textLabel?.font = UIFont.boldSystemFont(ofSize: 25)
cell1.backgroundColor = generateRandomColor()
return cell1
}
return cell1
} else {
cell1.textLabel?.text = tableViewData[indexPath.section].sectionData[dataIndex]
cell1.textLabel?.numberOfLines = 0
cell1.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell1.textLabel?.font = UIFont.systemFont(ofSize: 18)
cell1.backgroundColor = generateRandomColor()
return cell1
}
}
具有一种称为findviewbyposition
的方法,该方法将为您提供与LinearLayoutManager
关联的视图,您可以使用该视图取消突出显示该条目。但是请记住,未选择的视图可能不会布局,因此返回值将为categoryPosition
。