我有一个填充了项目的 GriView,在单击 gridview 上的项目时,我将背景资源更改为我在 res 文件夹中的图像。我的问题是滚动并返回所选项目时,它不再具有背景资源。相反,gridview 的其他一些项目获得了背景。
在我的 onCreate 方法中,我有以下代码来填充我的 GridView:
编辑根据我得到的建议,我创建了一个自定义适配器并填充了 gridview。我现在遇到的问题是,我的 gridView 元素现在没有被填充。当我设置我的适配器时,我传递了一个布尔数组和一个数据数组。数据数组包含应该用于填充 GridView 的所有数据,布尔数组用于确定是否选择了网格项。
编辑:即使在滚动后,已选择的 GridView 元素现在也会突出显示,但现在其他从未被选择的元素似乎被突出显示。
这是适配器类:
public class HoursAdapter extends BaseAdapter {
private Context mContext;
private boolean isSelected[];
private String hours[];
public HoursAdapter(Context c, boolean selected[], String hours[]){
this.isSelected = selected;
this.mContext = c;
this.hours = hours;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return hours.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if(convertView==null){
LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.hourview_item, null);
holder = new ViewHolder();
holder.hours =(TextView) convertView.findViewById(R.id.hours_text);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
if(isSelected[arg0-1])
holder.hours.setBackgroundResource(R.drawable.item_background_focused);
holder.hours.setText(hours[arg0-1]);
return convertView;
}
static class ViewHolder{
TextView hours;
}
}
这是我设置适配器的代码:
HoursAdapter adapter = new HoursAdapter(this,isSelected,data);
hoursView.setAdapter(adapter);
hoursView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
// TODO Auto-generated method stub
v.setBackgroundResource(R.drawable.item_background_focused);
}
});
我将不胜感激任何帮助!