我已使用此tutorial来创建自定义列表视图,但出于某种原因,它的行为与我期望的不同。
以下是我更改的代码以及当前用于适配器的代码:
public View getView(int position, View convertView, ViewGroup parent) {
// same code as in example with some differences in the .xml
viewHolder.itemLabel.setText(info.split(";")[0]);
viewHolder.itemDescription.setText(info.split(";")[1]);
viewHolder.itemLabel.setOnClickListener(this);
viewHolder.itemLabel.setTag(position);
if(viewHolder.itemLabel.getText().equals("Fat")){
System.out.println(info);
System.out.println(viewHolder.itemLabel.getText());
viewHolder.itemLabel.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.info_icon, 0);
}
return convertView;
}
现在,正在发生的事情是,由于某种原因,即使标签上只有一个“Fat”,也会为列表中的多个项目设置图标。
打印实际上显示 if 上的代码正在运行三次。
我认为这必须与应用程序的生命周期有关,但我不确定。
如果问题含糊不清,我很抱歉,但我找不到更好的方式来问这个问题。
答案 0 :(得分:1)
您需要在select e.ssn
from employees e cross join
projects p left join
works_on wo
on e.ssn = wo.ssn and p.pnumber = wo.pnumber
where p.dnumber = 5
group by e.ssn
having count(wo.snn) = count(*); -- no NULL values
内添加其他部分。
getView()
ConvertView参数是您之前从public View getView(int position, View convertView, ViewGroup parent) {
// same code as in example with some differences in the .xml
if(viewHolder.itemLabel.getText().equals("Fat")){
// Stuff
}else{
// Else stuff
}
return convertView;
}
返回的View的循环实例。你可以阅读它只是搜索它
快点。您没有在代码中正确使用视图集模式。使用它可以在列表视图中正确查找ViewHolder模式。除此之外,您现在应该转移到getView()
RecyclerView
。
答案 1 :(得分:0)
请检查代码可能会有所帮助。
public View getView(int position, View convertView, ViewGroup parent) {
// same code as in example with some differences in the .xml
viewHolder.itemLabel.setText(info.split(";")[0]);
viewHolder.itemDescription.setText(info.split(";")[1]);
viewHolder.itemLabel.setOnClickListener(this);
viewHolder.itemLabel.setTag(position);
if(viewHolder.itemLabel.getText().equals("Fat")){
System.out.println(info);
System.out.println(viewHolder.itemLabel.getText());
viewHolder.itemLabel.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.info_icon, 0);
}else{
viewHolder.itemLabel.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
return convertView;
}