Android ListView第一个元素颜色不同

时间:2016-01-27 19:30:23

标签: android listview colors textview

我正在处理一个项目,该项目有两个列表视图,用于选择不同的地区和城市。问题是,我有一个选项是"所有地区"和#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));

2 个答案:

答案 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重新初始化视图。