您好我正在使用Android自定义网格视图。我有一个带有图像视图,文本视图的自定义网格项。当我点击图像视图时它会改变它的颜色。它工作得很好。但是我有一个问题
我使用了代码
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] web1;
private final int[] Imageid;
public CustomGrid(Context c,String[] web,int[] Imageid ) {
mContext = c;
this.Imageid = Imageid;
this.web1 = web;
}
@Override
public int getCount() {
return web1.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView button01;
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
v = inflater.inflate(R.layout.grid_single, parent, false);
} else {
v = convertView;
}
TextView text = (TextView)v.findViewById(R.id.grid_text);
text.setText(web1[position]);
ImageView image = (ImageView)v.findViewById(R.id.grid_image);
image.setBackgroundResource(Imageid[position]);
button01 = (ImageView)v.findViewById(R.id.star);
button01.setOnClickListener(new OnClickListener() {
int button01pos = 0;
public void onClick(View v) {
if (button01pos == 0) {
button01.setImageResource(R.drawable.star);
button01pos = 1;
} else if (button01pos == 1) {
button01.setImageResource(R.drawable.startclicked);
button01pos = 0;
}
}
});
return v;
}
}
答案 0 :(得分:0)
以这种方式试试......
创建另一个数组来存储button01pos的值,初始值为{0,0,0,0 ...};
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] web1;
private final int[] Imageid;
private final int[] button01pos;
public CustomGrid(Context c,String[] web,int[] Imageid, int[] button01pos ) {
mContext = c;
this.Imageid = Imageid;
this.web1 = web;
this.button01pos=button01pos;
}
然后在getview()方法中,添加此项,
if (button01pos[position] == 0) {
button01.setImageResource(R.drawable.star);
} else if (button01pos == 1) {
button01.setImageResource(R.drawable.startclicked);
}
button01.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (button01pos[position] == 0) {
button01.setImageResource(R.drawable.star);
button01pos[position] = 1;
} else if (button01pos[position] == 1) {
button01.setImageResource(R.drawable.startclicked);
button01pos[position] = 0;
}
}
});