2012-11-12 49 views
0

我有一個GridView顯示矩陣元素,每個元素由一個EditText和一個TextView對象組成。如何在Android中的GridView中獲取並設置文本到EditText?

我該如何訪問GridView中特定的EditText和TextView對象?

我想要動態地將文本設置爲EditText和TextView對象。我已經開發了一些代碼來設置文本到EditText行+列和TextView(行,列),但所有的EditText顯示2和所有的TextView顯示(1,1)請檢查我的代碼並幫助我,我會非常感謝你。

public class GridAdapter extends BaseAdapter 
    { 
     Context mContext; 

     TextView elementSubscript; 
     EditText elementValue ; 
     int matrixIndex =0; 


     public GridAdapter(Context c) 
     { 
      mContext = c; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      // TODO Auto-generated method stub 
      View elementLayout; 
      if(convertView==null) 
      { 
       LayoutInflater layoutInflater = getLayoutInflater(); 
       elementLayout = layoutInflater.inflate(R.layout.matrix_element, null); 

       elementSubscript = (TextView)elementLayout.findViewById(R.id.elementSubscript); 
       elementValue = (EditText)elementLayout.findViewById(R.id.elementValue); 

       for(int row=1; row<=5; row++) 
       { 
        for(int col=1; col<=4; col++) 
        { 
         if(position == matrixIndex) 
         { 
          int mIndex =row+col; 
          elementSubscript.setText("("+row+","+col+")"); 
          elementValue.setText(mIndex+""); 

          matrixIndex++; 
         } 

        } 
       } 

      } 
      else 
      { 
       elementLayout = convertView; 
      } 

      return elementLayout; 
     } 


     public int getCount() 
     { 
      // TODO Auto-generated method stub 
      return 20; 
     } 

     public Object getItem(int arg0) 
     { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     public long getItemId(int position) 
     { 
      // TODO Auto-generated method stub 
      return 0; 
     } 
    } 

回答

0

您未更新回收視圖。請通過正確的教程like this。檢查部分5.5

修改後的代碼:

public class GridAdapter extends BaseAdapter 
{ 
    Context mContext; 

    TextView elementSubscript; 
    EditText elementValue ; 
    int matrixIndex =0; 


    public GridAdapter(Context c) 
    { 
     mContext = c; 
    } 

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

     View elementLayout = convertView; 

     if(convertView==null) 
     { 
      LayoutInflater layoutInflater = getLayoutInflater();//If view is null inflate a view 
      elementLayout = layoutInflater.inflate(R.layout.matrix_element, null); 
     } 
      elementSubscript = (TextView)elementLayout.findViewById(R.id.elementSubscript); 
      elementValue = (EditText)elementLayout.findViewById(R.id.elementValue); 

      for(int row=1; row<=5; row++) 
      { 
       for(int col=1; col<=4; col++) 
       { 
        if(position == matrixIndex) 
        { 
         int mIndex =row+col; 
         elementSubscript.setText("("+row+","+col+")"); 
         elementValue.setText(mIndex+""); 

         matrixIndex++; 
        } 
       } 
      } 
     //updating the view in case of view reuse and new view 
     return elementLayout; 
    } 


    public int getCount() 
    { 
     // TODO Auto-generated method stub 
     return 20; 
    } 

    public Object getItem(int arg0) 
    { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public long getItemId(int position) 
    { 
     // TODO Auto-generated method stub 
     return 0; 
    } 
} 
+0

親愛的我不知道回收的觀點想法。你能幫我推薦一些需要在我的代碼 – user1703737

+0

中進行的更改嗎?我已經爲你做了更改。如果convertView爲null,則使視圖膨脹並始終更新視圖。如果視圖正在被回收,convertView將具有需要更新的舊值 – Atrix1987

+0

親愛的我已經對我的代碼進行了更改,但仍然無法正常工作 – user1703737

相關問題