我正在处理一个项目,该项目有两个列表视图,用于选择不同的地区和城市。问题是,我有一个选项是"所有地区"和#34;所有城市"而且我想要这两种不同的颜色(在我的例子中,主要的app颜色)
我在ListView上尝试了getItemAtPosition之类的东西,但没有任何工作......以下是与ListView相关的代码:
mListView = (ListView) findViewById(R.id.list);
ArrayList<String> regions = getIntent().getExtras().getStringArrayList("regions_selection");
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String regionId;
if (position == 0) {
regionId = "";
} else {
regionId = OptionsManager.getInstance().getOptions().getRegion(position - 1).getId();
}
SearchInformations.getInstance().setRegionId(regionId);
startActivity(new Intent(PhoneRegionListActivity.this, PhoneClubListActivity.class));
}
});
mListView.setAdapter(new ArrayAdapter<>(this, R.layout.list_item, regions));
答案 0 :(得分:0)
在设置适配器之前(随时从KITKAT开始),您可以自动包裹add header views。
View all = getLayoutInflater().inflate(R.layout.list_item, mListView, false);
// setup view for all regions/cities
mListView.addHeaderView(all);
mListView.setAdapter(new ArrayAdapter<>(this, R.layout.list_item, regions));
答案 1 :(得分:0)
我已经能够根据他们的位置以不同的方式设置不同的颜色:
if(position == 0){
textView.setTextColor(ContextCompat.getColor(getContext(),R.color.orange));
}else{
textView.setTextColor(ContextCompat.getColor(getContext(),R.color.black));
}
这里,else很重要,否则,滚动时,其他一些元素可能会改变颜色。否则,另一种避免此问题的方法是每次使用LayoutInflater
重新初始化视图。