2011-06-13 21 views
0

我有什麼:用buttonadapter一個GridView。這裏的適配器的代碼古怪的圖形錯誤在android系統

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或徹頭徹尾的角落我的按鈕調整大小,並隨着這個(以下imagege): enter image description here 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

我不會存儲在該按鈕列表中的按鈕。 (靜態也有可疑)。

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*代碼,您避風港沒有告訴我們?