【发布时间】:2015-02-16 05:29:08
【问题描述】:
我正在为弹出窗口的循环内部动态创建线性布局,并尝试为每个布局添加侦听器。
我正在使用以下代码。但是当我点击任何布局时,它会清除所有数据..
LinearLayout layout = null;
for(int i=0;i<data.size();i++)
{
layout=new LinearLayout(MainActivity.this);
layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
eventFilterlayout.addView(layout);
eventFilterlayout.setTag(new Holder(layout));
imageView=new ImageView(MainActivity.this);
imageView.setImageResource(data.get(i).getImgRes());
imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1.0f));
layout.addView(imageView);
eventNameText=new TextView(MainActivity.this);
eventNameText.setText(data.get(i).getText());
eventNameText.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,4.0f));
eventNameText.setGravity(Gravity.CENTER_VERTICAL);
layout.addView(eventNameText);
final Holder holder=(Holder)eventFilterlayout.getTag();
holder.layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(eventNameText.getText().equals("All"))
fillGridData(Utils.ALL);
if(eventNameText.getText().equals("Some"))
fillGridData(Utils.SOME);
if(eventNameText.getText().equals("None"))
fillGridData(Utils.NONE);
if(eventNameText.getText().equals("Little more"))
fillGridData(Utils.MORE)
if(eventNameText.getText().equals("Little less"))
fillGridData(Utils.LESS);
window.dismiss();
}
});
}
在fillGridData方法中
public void fillGridData(int type)
{
eventData.clear();
switch (type) {
case Utils.ALL:
list.add(new EventData("All",R.raw.hall1),
list.add(new EventData("All", R.raw.hall2));
break;
case Utils.SOME:
list.add(new EventData("Some", R.raw.hall2));
break;
case Utils.NONE:
break;
case Utils.MORE:
list.add(new EventData("More",R.raw.hall1);
break;
case Utils.LESS:
list.add(new EventData("Less",R.raw.hall1),
list.add(new EventData("Less", R.raw.hall2));
break;
default:
break;
}
eventAdapter=new EventAdapter(MainActivity.this,eventData);
gridView.setAdapter(eventAdapter);
eventAdapter.notifyDataSetChanged();
gridView.invalidate();
gridView.bringToFront();
}
所以当我点击线性布局时,无论它显示的数据都是不可见的,为了使其可见,我需要重新启动应用程序,没有例外。如果我做错了什么,请帮助我......
【问题讨论】:
-
onclick 列表和 eventAdapter.notifyDataSetChanged(); gridView.invalidate();同时发生,你想用 notifydatasetadapter 实现什么?
-
实际上我正在更改数据,这就是为什么我放置 eventAdapter.notifyDataSetChanged() 但仍然如果我删除那些行,我会得到相同的行为..
-
eventData.clear();这有影响吗?
-
@Rohit 检查以下链接以更了解其工作原理stackoverflow.com/questions/4198425/…
-
@diva: 不,最初它正在加载数据.. 最初在 onCreate 我正在调用相同的方法,当时它正在加载数据,但是当我单击它时它没有加载任何数据
标签: android