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
是的。我的代碼要複雜得多,但是當我發佈它時,我輸入了它的概括性。我解決了這個問題: 'if(llContainer == null){llContainer == blablabla; }「這就是爲什麼這是工作?我認爲getView方法被多次調用。但爲什麼呢? – TGeorge 2014-12-02 19:04:02
爲您的Spinner/ListView等中的每個項目/視圖調用getView(...)方法 – 2014-12-03 06:39:36