Я динамически создаю линейную компоновку внутри цикла для всплывающего окна и пытаюсь добавить слушателя к каждому макету.Нажмите на прослушиватель динамически созданного linearlayout
Я использую следующий код. Но когда я нажимаю на любую из макета, она очищает все данные ..
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();
}
Так что, когда я нажимаю на Linear Layout, данные независимо от его отображения идет невидимая и чтобы сделать его видимым, мне нужно перезагрузить приложение, никаких исключений. Plz помогите мне, если я делаю что-то неправильно ....
onclick lister и eventAdapter.notifyDataSetChanged(); gridView.invalidate(); происходят в одно и то же время, что вы хотите достичь с notifydatasetadapter? – KOTIOS
На самом деле я меняю данные, поэтому дат, почему я помещаю eventAdapter.notifyDataSetChanged(), но все же, если я удалю те строки, которые будут выполняться по типу m. .. – Rohit
eventData.clear(); это эффект? – KOTIOS