2011-11-05 39 views
1

嘿,我試圖構建一個應用程序,用戶可以在其中輸入一些數字,這些數字 將顯示在具有自定義網格視圖項目的gridview中。如果我使用它的工程常用的gridview項目。但是,如果我使用我自己的佈局,它不起作用。只有 中的第一個元素將顯示。有沒有人爲什麼這不起作用?Android中的動態GridView項目

public class GridViewAppActivity extends Activity { 

private ArrayList<String> items; 
private GridViewAdapter adapter; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    items = new ArrayList<String>();  
    adapter = new GridViewAdapter(this); 
    GridView gridView = (GridView) findViewById(R.id.gridView); 
    gridView.setAdapter(adapter); 

    final Button addButton = (Button) findViewById(R.id.add_button); 
    final EditText itemEditText = (EditText) findViewById(R.id.number_field); 

    // Click listener for Button 
    addButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      items.add(itemEditText.getText().toString()); 
      itemEditText.setText(""); 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
} 

public class GridViewAdapter extends BaseAdapter { 

    private Context mContext; 

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

    public int getCount() { 
     return items.size(); 
    } 

    public Object getItem(int position) { 
     return items.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View v; 
     if(convertView==null){ 
      LayoutInflater li = getLayoutInflater(); 
      v = li.inflate(R.layout.grid_item, null); 
      TextView tv = (TextView)v.findViewById(R.id.grid_item_text); 
      tv.setText(items.get(position)); 
     } else { 
      v = convertView; 
     } 
     return v; 
    } 

} 
} 
+0

看我的答案,你必須改變你的GridViewAdapter的getview()方法。就像下面給出的一樣。 – user370305

回答

2

試試這個,

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

    if(convertView == null) { 
     LayoutInflater li = getLayoutInflater(); 
     v = li.inflate(R.layout.grid_item, null); 
    } else {    
     v = convertView;   
    } 

    TextView tv = (TextView)v.findViewById(R.id.grid_item_text); 
    tv.setText(items.get(position));   

    return v;  
} 
+0

現在它可以工作,非常感謝您的幫助。 –