SetOnClickListener不起作用

时间:2015-03-12 00:24:22

标签: java android gridview fragment

我使用运行时结构创建了不同的按钮,其中包含图片,名称和价格。 问题我必须将结构调整为GridView,之前是线性布局,并且setOnClickListener已停止工作。

下面的代码,您可以看到setOnclick进入循环。

package info.androidhive.slidingmenu;



public class Menu extends Fragment {

//Creem una array de les imatges de productes
int[] PrimersIcons = { R.drawable.ensalada_frutas300x200, R.drawable.ensalada_queso300x200,
        R.drawable.entrante_mejicano300x200, R.drawable.sopa_arroz300x200};
//Creem una array amb el nom de cada un dels productes
String[] PrimersNoms = {"Amanida de fruites", "Amanida de formatge", "Entrant mexicà", "Sopa d'arròs"};
//Creem una array amb el preu dels productes
String[] PrimersPreus = {"7 €", "8 €", "9 €", "3 €"};
int[] SegonsIcons = { R.drawable.ensalada_frutas300x200, R.drawable.ensalada_queso300x200,
        R.drawable.entrante_mejicano300x200, R.drawable.sopa_arroz300x200};
//Creem una array amb el nom de cada un dels productes
String[] SegonsNoms = {"Amanida de fruites", "Amanida de formatge", "Entrant mexicà", "Sopa d'arròs"};
//Creem una array amb el preu dels productes
String[] SegonsPreus = {"7 €", "8 €", "9 €", "3 €"};

int[] PostresIcons = { R.drawable.ensalada_frutas300x200, R.drawable.ensalada_queso300x200,
        R.drawable.entrante_mejicano300x200, R.drawable.sopa_arroz300x200};
//Creem una array amb el nom de cada un dels productes
String[] PostresNoms = {"Amanida de fruites", "Amanida de formatge", "Entrant mexicà", "Sopa d'arròs"};
//Creem una array amb el preu dels productes
String[] PostresPreus = {"7 €", "8 €", "9 €", "3 €"};
//Creem una arrayList del tipus miBoton, aquesta guardara la imatge del producte amb nom i preu
ArrayList<MiBoton> ProductesBotons = new ArrayList<MiBoton>();

//Creem un adaptador a partir de la classe CustomGridViewAdpater
private CustomGridViewAdapter adapter;

public Menu(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    int i;
    View rootView = inflater.inflate(R.layout.menu_dia, container, false);

    //Creem un GridView que anomenarem gridProductes i li passarem la id del grid
    GridView gridPrimers = (GridView)rootView.findViewById(R.id.GridPrimers);

    //Fem un bucle que agafi tots els elements de la array
    for (i = 0; i < PrimersNoms.length; i++){
        //Ens crea un element del tipus miboton i el guarda a ProductesBotons que es la array de miboton
        ProductesBotons.add(new MiBoton(getActivity(), PrimersIcons[i], PrimersNoms[i], PrimersPreus[i]));
        ProductesBotons.get(i).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                detall d = new detall();
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.frame_container, d);
                ft.commit();
            }
        });

    }

    //Al adapter li creem un new customgridviewadapter, li passem el layout al que pertany i la array
    adapter = new CustomGridViewAdapter(getActivity(), R.layout.menu_dia, ProductesBotons);
    gridPrimers.setAdapter(adapter);

    ProductesBotons.clear();

    GridView gridSegons = (GridView)rootView.findViewById(R.id.GridSegons);

    //Fem un bucle que agafi tots els elements de la array
    for (i = 0; i < SegonsNoms.length; i++){
        //Ens crea un element del tipus miboton i el guarda a ProductesBotons que es la array de miboton
        ProductesBotons.add(new MiBoton(getActivity(), SegonsIcons[i], SegonsNoms[i], SegonsPreus[i]));
        ProductesBotons.get(i).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                detall d = new detall();
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.frame_container, d);
                ft.commit();
            }
        });
    }

    //Al adapter li creem un new customgridviewadapter, li passem el layout al que pertany i la array
    adapter = new CustomGridViewAdapter(getActivity(), R.layout.menu_dia, ProductesBotons);
    gridSegons.setAdapter(adapter);
    ProductesBotons.clear();

    GridView gridPostres = (GridView)rootView.findViewById(R.id.GridPostres);

    //Fem un bucle que agafi tots els elements de la array
    for (i = 0; i < PostresNoms.length; i++){
        //Ens crea un element del tipus miboton i el guarda a ProductesBotons que es la array de miboton
        ProductesBotons.add(new MiBoton(getActivity(), PostresIcons[i], PostresNoms[i], PostresPreus[i]));
        ProductesBotons.get(i).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                detall d = new detall();
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.frame_container, d);
                ft.commit();
            }
        });
    }

    //Al adapter li creem un new customgridviewadapter, li passem el layout al que pertany i la array
    adapter = new CustomGridViewAdapter(getActivity(), R.layout.menu_dia, ProductesBotons);
    gridPostres.setAdapter(adapter);

    return rootView;
}


}
/*
//Bitmap bmpImage =         BitmapFactory.decodeResource(this.getResources(),R.drawable.carrito);
//PanelProduct pnlProduct = new PanelProduct(this.getActivity(), bmpImage, "Carne", "13,00€");

View rootView = inflater.inflate((R.layout.products), container);
return rootView;
*/

0 个答案:

没有答案