2013-07-16 27 views
2

我有按鈕的GridView控件,我需要改變的背景和可點擊一些按鈕,它可以很好地用於所有,但不是第一位:GridView的第一項工作不

public View getView(int position, View convertView, ViewGroup parent) { 
     Button btn; 

     if (convertView == null) { 

      btn = new Button(mContext); 

      btn.setLayoutParams(new GridView.LayoutParams(44,44)); 
      btn.setPadding(0,0,0,0); 
      } 
     else { 
      btn = (Button) convertView; 
     } 



    btn.setId(position); 
    bottoni[position] = btn; 
    //abilito o disabilito caselle 
    if (mossa == 1){ 
      btn.setBackgroundColor(Color.parseColor("#C85A17")); 
      btn.setClickable(true); 
    } 
    else { 
    if (statobtn[position] == "A") { 
     btn.setBackground(getResources().getDrawable(R.drawable.semi)); 
     btn.setClickable(true); } 
    if (testobtn[position] != "") { 
     btn.setBackground(getResources().getDrawable(R.drawable.fiorebianco)); 
     btn.setClickable(false); } 
    } 


    btn.setOnClickListener(new MyOnClickListener(position,btn)); 


    return btn; 
    } 

什麼想法?

我開始與100鍵eneabled AFER首先我需要啓用不僅關係到按鈕按下幾個按鈕,但是第一個按鈕總是enebled ...

+0

我們可以看到'getView'的休息嗎? – gunar

回答

1

我有完全相同的問題,並通過去除固定它/修改GridView.LayoutParams。

嘗試註釋掉下面的代碼:

btn.setLayoutParams(new GridView.LayoutParams(44,44)); 
+0

感謝您的回答。它給了我解決不同問題的線索。 – Simon

+0

我有同樣的問題。我如何保持評論 'btn.setLayoutParams(new GridView.LayoutParams(44,44)); '同時解決問題,因爲我真的需要這個評論在我的情況 –

0

的GridView可以調用getView的位置0,所以它有很多按鈕位置0。但是,最後一個可能是不是屏幕上的一個,所以你可能會改變錯誤的按鈕。

如何解決?

你可以給標籤爲每個按鈕,然後通過GridView.findViewByTag發現屏幕右邊按鈕()。

1

當我將視圖保留在視圖持有者中時,我遇到同樣的問題。 爲了解決這個問題,我嘗試在position = 0的情況下創建新的視圖,它工作。

在你的代碼,改變

if (convertView == null)

if (convertView == null || position == 0) {