Android Adapter问题探究

chenchenchenliu chenchenchenliu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大家好,最近在做Android项目,在实现类似驾考宝典里面查看所有试题题号的功能。适配器不可避免要使用,但在使用过程中遇到两个问题。
有一个gridview,里面放的是所有试题题号,默认是不显示的,当我点击界面按钮时显示gridview,同时设置已经做过的题目样式,如果试题已作答,则在gridview对应的题号item改变背景以示作答。
第一个问题,girdview中的第一个item修改背景不起作用。
第二个问题,必须要先让gridview显示一次(只要显示一次即可,后面无论gridview是显示还是隐藏,设置item都有效),然后在设置item背景样式才起作用,否则没效果。请各位帮帮忙,实在是烦躁。

我是自定义的适配器,在适配器中我还定义了一个设置item背景色的方法A();,我发现调用A()方法时,还未执行getView()方法,这样在设置背景样式自然不管用,但不清楚为什么。

以下是自定义适配器的部分代码:

/**存储所有item,key:位置;value:Item中的控件*/
private Map<Integer, TextView> items;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.item_text, null);
}
TextView result = (TextView) convertView.findViewById(R.id.item_text_title);
result.setText(datas[position]);

items.put(position, result);

return convertView;
}
/**
* 设置作答正确时的样式
* @param position
*/
public void changeCorrectStyle(int position){
if(items == null || items.size() <= 0){
return;
}

TextView tvItem = items.get(position);
tvItem.setBackground(context.getResources().getDrawable(R.drawable.shape_green));
}

...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
chenchenchenliu
Android 80,490 成员 91,375 内容