注:这应该不会有什么关系库,我只是包括他们对细节不能添加视图之后刷新布局(只有在CustomAdapter发生)
问题:有一个叫FlingContainer布局从这个图书馆https://github.com/Diolor/Swipecards。它需要另一个布局作为参数(卡被折叠),在卡内部,我有一个按钮来添加标签到卡。在用于Fling容器的CustomAdapter中,我在GetView方法中使用了此代码。我知道它是有效的,因为我可以看到电视在调试模式下被添加,但它们并没有出现。
我试过了:我尝试在没有flingContainer的活动中进行此操作,并且视图立即添加,没有任何问题。我试图从mainActivity搜索R.id.addTag,但是我得到一个nullPointer异常,我认为这是因为addTag嵌入在另一个布局中
结论:任何想法在这里出了什么问题?我怎样才能让addView在卡上工作?
感谢
编辑:这里是整个getView
public View getView(int position, View convertView, final ViewGroup parent) {
final View vi = inflater.inflate(layoutResource, parent, false);
TextView tv = (TextView) vi.findViewById(R.id.card_one_line);
flowLayout = (FlowLayout) vi.findViewById(R.id.flow_container);
final TextView typeTag = new TextView(getContext());
final TextView typeTag2 = new TextView(getContext());
TextView addTag = (TextView) vi.findViewById(R.id.addTag);
typeTag.setText(lines.get(position).getType());
typeTag.setBackgroundColor(getContext().getResources().getColor(R.color.nice_blue));
typeTag.setTextColor(getContext().getResources().getColor(R.color.lightening_yellow));
typeTag.setTextSize(25);
typeTag.setPadding(5, 5, 5, 5);
flowLayout.addView(typeTag);
addTag.setOnClickListener(new View.OnClickListener() {
int i = 0;
@Override
public void onClick(View v) {
TextView tv = new TextView(getContext());
tv.setBackgroundColor(getContext().getResources().getColor(R.color.nice_blue));
tv.setTextColor(getContext().getResources().getColor(R.color.lightening_yellow));
String text = "Goofy"+i++;
tv.setText(text);
tv.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
flowLayout.addView(tv);
parent.invalidate();
parent.requestLayout();
Toast.makeText(getContext(), "heyheyhey", Toast.LENGTH_SHORT).show();
}
});
tv.setText((lines.get(position).getLine()));
return vi;
}
在这个图片我击中flingcontainer里面+键,g是的onClick的外部加入的默认类型,试图让的onclick在这里工作
您正在尝试添加视图是想通过一个适配器来控制的观点是正确的吗? –
是啊!我很确定这是事实。 –
请从CustomAdapter – 0X0nosugar