2014-12-02 96 views
0

我已經創建了一個微調的適配器,看起來像這樣:addView()添加視圖,但它不顯示

public class MyAdapter extends ArrayAdapter<String> { 

private LinearLayout llContainer; 

public MyAdapter (Context context, List<String> names) { 
    super(context, 0, filters); 
} 

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

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.some_layout, parent, false); 
    } 

    llContainer = (LinearLayout) convertView.findViewById(R.id.llContainer); 

    return convertView; 
} 

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    String name = getItem(position); 

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.some_layout_drop, parent, false); 
    } 

    Button button = (Button)convertView.findViewById(R.id.btn); 
    button.setText(name); 
    button.setOnClickListener(new OnClickListener(){ 
     @Override 
     void onClick(View v){ 
      addItemToLinearLayout(); 
     } 
    }) 

    return convertView; 
} 

private void addItemToLinearLayout(){ 
    Button btn = new Button(); 
    btn.setText("something"); 
    btn.setLayoutParams(new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.MATCH_PARENT, 
     )); 

    //HERE I ADD A BUTTON TO THE LINEAR LAYOUT llContainer 
    llContainer.addView(btn); 

} 

}

的問題是,按鈕沒有在顯示LinearLayout中。 llContainer在getView()方法中分配的事實與此有關嗎?如果我通過/從XML手動在llContainer中添加一個按鈕,他就會出現。

澄清問題:我有一個微調視圖。我想要的是當我點擊它時,下拉菜單應該包含一些按鈕。當我點擊微調視圖中的其中一個按鈕(顯示用戶選擇的值的部分)以添加按鈕或文本視圖或其他內容時。如果我嘗試調試llContainer含有添加的視圖的應用程序,但它似乎mMeasuredHeight和mMeasuredWidth是0,也是id爲0,coordonates爲0

回答

0
Button btn = new Button(); //without context? 

可能像

Button btn = new Button(context); //pass context into the function 

android.widget.Button

公共構造函數

Button(Context context) 
Button(Context context, AttributeSet attrs) 
Button(Context context, AttributeSet attrs, int defStyleAttr) 
Button(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) 
+0

是的。我的代碼要複雜得多,但是當我發佈它時,我輸入了它的概括性。我解決了這個問題: 'if(llContainer == null){llContainer == blablabla; }「這就是爲什麼這是工作?我認爲getView方法被多次調用。但爲什麼呢? – TGeorge 2014-12-02 19:04:02

+0

爲您的Spinner/ListView等中的每個項目/視圖調用getView(...)方法 – 2014-12-03 06:39:36

相關問題