我有什么:带有buttonadapter的gridview。这是适配器的代码
public class ButtonAdapter extends BaseAdapter {
static List<Button> button = new ArrayList<Button>();
private Context mContext;
// Gets the context so it can be used later
public ButtonAdapter(Context c) {
mContext = c;
}
public int getCount() {
return my.package.names.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return position;
}
public View getView(int position,
View convertView, ViewGroup parent) {
if (convertView == null) {
button.add(new Button(mContext));
button.get(position).setLayoutParams(new GridView.LayoutParams(85, 85));
button.get(position).setPadding(8, 8, 8, 8);
button.get(position).setOnClickListener(new MyOnClickListener(position));
}
else {
}
button.get(position).setText(my.package.names[position]); // names is an array of strings
button.get(position).setTextColor(Color.BLACK);
button.get(position).setBackgroundResource(*Drawable here*);
return button.get(position);
}
}
问题:当触摸屏幕上的按钮并将手指移动到uperright或uperleft或downleft或downright corner时,我的按钮会调整大小并变为如下所示(图像如下): OnClickListener类,非常简单
public class MyOnClickListener implements OnClickListener
{
private final int position;
int i;
public MyOnClickListener(int position)
{
this.position = position;
}
public void onClick(View v)
{
// Preform a function based on the position
for(i=0; i<9; i++){
if(this.position == i){
mypackagemyclass.flipper.setDisplayedChild(i); //viewflipper
mypackagemyclass.slider.open(); //sliding drawer
}
}
}}
我尝试使用imageadapter,同样的问题。在模拟器和真实设备上。我到处搜索,以前似乎没有人遇到过这个问题。我该怎么办?
答案 0 :(得分:0)
我不会将您的按钮存储在该按钮列表中。 (静态也有可疑)。
Android会在列表和网格中为您缓存视图,并重复使用已在屏幕外滚动的视图,如果您的网格变大,这将更有效。
我建议您getView()
看起来更像这样(未经测试):
public View getView(int position, View convertView, ViewGroup parent) {
Button button;
if (convertView == null) {
// create button
button = new Button(mContext);
button.setLayoutParams(new GridView.LayoutParams(85, 85));
button.setPadding(8, 8, 8, 8);
button.setTextColor(Color.BLACK);
}
else {
// reuse button
button = (Button)convertView;
}
// (re)initialise button for this position
button.setOnClickListener(new MyOnClickListener(position));
button.setText(my.package.names[position]); // names is an array of strings
button.setBackgroundResource(*Drawable here*);
return button;
}
(并删除按钮列表)。
我不能肯定地说它会解决你的问题,但它应该把你和其他人放在同一个页面上: - )
或者您的问题可能出现在*Drawable here*
代码中,而您尚未向我们展示过这些代码?