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