我调用Web服务并将JSON响应解析为名为venueList的对象
一些返回的场地是'特色',这意味着在列表视图中,它们有不同的背景,可以从非特色场地中脱颖而出。
获取数据后,我遍历数据,将特色项目放在顶部,然后添加非特色场所。
按照我想要的方式对数据进行排序后,我使用自定义的ArrayAdapter,如下所示:
ArrayAdapter<Listing> customerAdapter =
new ArrayAdapter<Listing>(ViewHappyHoursListingsActivity.this,
R.layout.list_item, R.id.name, venueListsWithFeaturedAtBeginning) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView listingID = (TextView)view.findViewById(R.id.listingID);
TextView name = (TextView)view.findViewById(R.id.name);
TextView location = (TextView)view.findViewById(R.id.location);
TextView runningTime = (TextView)view.findViewById(R.id.runningtime);
TextView distance = (TextView)view.findViewById(R.id.distance);
// Change UI if this listing is a featured one
if(getItem(position).featured)
{
name.setText(getItem(position).venueName);
Log.d("Setting textview to black in position:", String.valueOf(position));
name.setBackgroundResource(R.color.black);
}
else
{
name.setText(getItem(position).venueName);
}
listingID.setText("" + getItem(position).listingID);
location.setText(getItem(position).venueLocation);
runningTime.setText(getItem(position).runningTime);
distance.setText(getItem(position).distanceForUI);
return view;
}
};
setListAdapter(customerAdapter);
根据场地列表中的数据,只有前两个项目应该具有黑色背景。列表视图中有8个项目,第一个和第二个项目具有预期的黑色背景,但第六个和第七个项目也是如此
输出如下:
ListItem1: Black background
ListItem2: Black background
ListItem3: White background
ListItem4: White background
ListItem5: White background
ListItem6: Black background
ListItem7: Black background
ListItem8: White background
Log.d()行输出
D /将名称textview设置为位置:: 0的黑色 D /将名称textview设置为位置为黑色:: 1
,别无其他。
有谁知道为什么会发生这种行为?
答案 0 :(得分:0)
视图正在被回收(即第6和第7项重用与1和2相同的convertView
),因此您需要从不需要它的视图中删除背景。添加
name.setBackgroundResource(0);
到您的else
分支。