Android 默认情况下设置特定listview项目的背景

Android 默认情况下设置特定listview项目的背景,android,Android,在我的片段中,我可以通过单击列表中的某个项目来控制列表项目的背景,例如,如果单击项目0,则其背景设置为黄色,而其他列表项目的背景设置为灰色 我在监听器中完成了所有这些工作,它按照预期工作。见下面的代码: lvCodeType.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View

在我的片段中,我可以通过单击列表中的某个项目来控制列表项目的背景,例如,如果单击项目0,则其背景设置为黄色,而其他列表项目的背景设置为灰色

我在监听器中完成了所有这些工作,它按照预期工作。见下面的代码:

    lvCodeType.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
            //lvCodeType.getChildAt(position).setBackgroundColor(Color.parseColor("#FFCC00"));

            //lvCodeType.getChildAt(0).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_rollover);

            if(position == 0) {
                desiredCodeType = "ABCD";

                lvCodeType.getChildAt(position).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_rollover);

                lvCodeType.getChildAt(1).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(2).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(3).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
            } else if(position == 1) {
                desiredCodeType = "EFGH";

                lvCodeType.getChildAt(0).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);

                lvCodeType.getChildAt(1).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_rollover);

                lvCodeType.getChildAt(2).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(3).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
            } else if(position == 2) {
                desiredCodeType = "AGSOPA";

                lvCodeType.getChildAt(0).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(1).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);

                lvCodeType.getChildAt(2).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_rollover);

                lvCodeType.getChildAt(3).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);                      
            } else if(position == 3) {
                desiredCodeType = "MNOP";

                lvCodeType.getChildAt(0).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(1).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(2).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);

                lvCodeType.getChildAt(3).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_rollover); 
            } else {
                desiredCodeType = "";

                lvCodeType.getChildAt(0).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(1).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(2).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
                lvCodeType.getChildAt(3).setBackgroundResource(R.drawable.bgnd_lv_code_type_item_default);
            }
        }
    });
lvCodeType.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图,整型位置,长id){
//lvCodeType.getChildAt(位置).setBackgroundColor(Color.parseColor(“#FFCC00”);
//getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u rollover);
如果(位置==0){
desiredCodeType=“ABCD”;
lvCodeType.getChildAt(位置).setBackgroundResource(R.drawable.bgnd\U lv\U代码\U类型\U项目\U滚动);
getChildAt(1).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(2).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(3).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
}否则如果(位置==1){
desiredCodeType=“EFGH”;
getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(1)setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u rollover);
getChildAt(2).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(3).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
}否则如果(位置==2){
desiredCodeType=“AGSOPA”;
getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(1).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(2)setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u rollover);
getChildAt(3).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
}否则如果(位置==3){
desiredCodeType=“MNOP”;
getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(1).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(2).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(3)setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u rollover);
}否则{
desiredCodeType=“”;
getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(1).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(2).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
getChildAt(3).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default);
}
}
});
现在,我想在用户使用任何列表项之前首次加载此列表,我想设置特定列表项的背景,例如,当列表首次加载时,项目0的背景色应为黄色,其他项目的背景色为灰色

在设置列表适配器后,我在片段中尝试了以下代码,但在listview的侦听器之外,但失败了: getChildAt(0).setBackgroundResource(R.drawable.bgnd\u lv\u code\u type\u item\u default)

你知道我该怎么做吗

下面是我的片段中的列表代码:

// Inflate and customise code type listview
lvCodeType = (ListView) rlMain.findViewById(R.id.lv_codetype);
lvCodeType.setDividerHeight(2);
lvCodeType.setBackgroundResource(R.drawable.bgnd_lv_code_type);

lvCodeTypeData = new ArrayList<LVCodeTypeDrawer>();
lvCodeTypeData.add(new LVCodeTypeDrawer("ABCD"));
lvCodeTypeData.add(new LVCodeTypeDrawer("EFGH"));
lvCodeTypeData.add(new LVCodeTypeDrawer("IJKL"));
lvCodeTypeData.add(new LVCodeTypeDrawer("MNOP"));

lvCodeTypeAdapter = new LVCodeTypeAdapter(((MainActivity) getActivity()), 
                                            lvCodeType, 
                                            R.layout.lv_layout_code_type, 
                                            lvCodeTypeData, 
                                            officialRegularFont, 
                                            officialBoldFont);

lvCodeType.setAdapter(lvCodeTypeAdapter);
//膨胀并自定义代码类型listview
lvCodeType=(ListView)rlMain.findViewById(R.id.lv_代码类型);
lvCodeType.setDividerHeight(2);
lvCodeType.setBackgroundResource(R.drawable.bgnd\U lv\U代码\U类型);
lvCodeTypeData=newArrayList();
添加(新的LVCodeTypeDrawer(“ABCD”);
添加(新的LVCodeTypeDrawer(“EFGH”);
添加(新的LVCodeTypeDrawer(“IJKL”);
添加(新的LVCodeTypeDrawer(“MNOP”);
lvCodeTypeAdapter=新的lvCodeTypeAdapter(((MainActivity)getActivity()),
lvCodeType,
R.layout.lv\u布局\u代码\u类型,
lvCodeTypeData,
官方正规字体,
官方黑体字);
setAdapter(lvCodeTypeAdapter);
下面是我的列表适配器代码:

public class LVCodeTypeAdapter extends ArrayAdapter<LVCodeTypeDrawer> {

    public static String TAG = "LVCodeTypeAdapter";
    Context context;
    List<LVCodeTypeDrawer> drawerItemList;
    int layoutID;
    public Typeface officialBoldFont, officialRegularFont;
    public ListView lvCodeType;

    public LVCodeTypeAdapter(Context context, ListView _lvCodeType, int _layoutResourceID, List<LVCodeTypeDrawer> listItems, 
            Typeface _officialRegularFont, Typeface _officialBoldFont) {

        super(context, _layoutResourceID, listItems);

        this.context = context;
        this.lvCodeType = _lvCodeType;
        this.layoutID = _layoutResourceID;
        this.drawerItemList = listItems;
        this.officialBoldFont =  _officialBoldFont;
        this.officialRegularFont = _officialRegularFont;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        final int _position = position;

        LVCodeTypeDrawerItemHolder lvCodeTypeDrawerItemHolder;

        View view = convertView;

        if (view == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();

            lvCodeTypeDrawerItemHolder = new LVCodeTypeDrawerItemHolder();

            view = inflater.inflate(layoutID, parent, false);

            lvCodeTypeDrawerItemHolder.itemName = (TextView) view.findViewById(R.id.tv_codetype);

            view.setTag(lvCodeTypeDrawerItemHolder);
        } else {
            lvCodeTypeDrawerItemHolder = (LVCodeTypeDrawerItemHolder) view.getTag();
        }

        LVCodeTypeDrawer dItem = (LVCodeTypeDrawer) this.drawerItemList.get(_position);

        lvCodeTypeDrawerItemHolder.itemName.setText(dItem.getCodeTypeValue());
        lvCodeTypeDrawerItemHolder.itemName.setTypeface(officialBoldFont);
        lvCodeTypeDrawerItemHolder.itemName.setTextSize(14.5f);
        lvCodeTypeDrawerItemHolder.itemName.setTextColor(Color.BLACK);

        return view;
    }

    private static class LVCodeTypeDrawerItemHolder {
        TextView itemName;
    }

}
公共类LVCodeTypeAdapter扩展了ArrayAdapter{
公共静态字符串TAG=“LVCodeTypeAdapter”;
语境;
列表列表;
国际布局;
公共字体官方黑体字、官方正规字体;
公共列表视图lvCodeType;
公共LVCodeTypeAdapter(上下文上下文、ListView\u lvCodeType、int\u layoutResourceID、列表项、,
字体_officialRegularFont,字体_officialBoldFont){
超级(上下文、布局资源ID、列表项);
this.context=上下文;
this.lvCodeType=\u lvCodeType;
this.layoutID=\u layoutResourceID;
this.drawerItemList=列表项;
this.officialBoldFont=\u officialBoldFont;
this.officialRegularFont=\u officialRegularFont;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终int_位置=位置;
LVCodeTypeDrawerItemHolder LVCodeTypeDrawerItemHolder;
视图=转换视图;
如果(视图==null){