2017-09-03 1 views
-3

J'ai un code ici où j'ai une méthode getItem() où elle ne retournera rien d'autre que zéro. Je me demande pourquoi j'essaie d'aller de l'avant, mais je ne peux pas le faire sans cela. Quelqu'un peut-il aider? Chaque fois que je compare le getItem() avec un zéro ou 1, il apparaît toujours à zéro quel que soit le code, je peux poster plus de mon code comme d'autres fichiers si nécessaire mais cela devrait être suffisant pour le moment. S'il vous plaît aider ????Pourquoi ma méthode continue à renvoyer 0

package com.mycompany.myapp; 
    import java.util.*; 
    import java.text.*; 
    import java.lang.reflect.*; 

    public class ActivityProducer 
    { 
     public HashMap<Class<?>, Integer> recipe = new HashMap<Class<?>, Integer>(); 

     public ActivityProducer(){ 
     } 

     public int getItem(){ 
      int index = 0; 
      for(Class<?> i : recipe.keySet()){ 
       index = recipe.get(i); 
      } 
      return index; 
     } 

     public Class<?> getName(){ 
      Class<?> name = null; 
      for(Class<?> names : recipe.keySet()){ 
       name = names; 
      } 
      return name; 
     } 

     public Class<?>[] getNames(){ 
      Class<?>[] names = new Class<?>[recipe.size()]; 
       List<Class<?>> n = new ArrayList<Class<?>>(); 

      n.addAll(recipe.keySet()); 

       for(int i = 0; i < names.length; i++){ 
       names[i] = n.get(i); 
      } 
      return names; 
     } 
    } 

La recette est un hashmap où il prend un type de classe pour la clé et un type entier pour la valeur. chaque fois que je compare le getItem() avec un nombre zéro gagne toujours pourquoi ????? Toutes les autres méthodes fonctionnent juste pas celle-là ????? Il doit y avoir une raison pour laquelle cela se produit

est ici le principal code d'activité

package com.mycompany.myapp; 

    import android.app.*; 
    import android.os.*; 
    import android.widget.*; 
    import android.widget.AdapterView.*; 
    import android.view.*; 
    import android.content.*; 
    import java.util.*; 

    public class MainActivity extends Activity 
    { 
     private Intent intent; 
     private ActivityProducer producer; 
     private Extendible ex; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      producer = new ActivityProducer(); 

    producer.recipe.put(ChileConLecheActivity.class, 1); 
    producer.recipe.put(ArrozActivity.class, 2); 
    producer.recipe.put(EnchiladasActivity.class, 3); 
    producer.recipe.put(SopaActivity.class, 4); 

    ex = new Extendible(); 

    GridView gridView = (GridView) findViewById(R.id.mainGridView); 
    gridView.setAdapter(new ImageAdapter(this)); 

    gridView.setOnItemClickListener(new OnItemClickListener(){ 
     public void onItemClick(AdapterView<?> parent , View view , int position , long id){ 
      for(int i = 0; i < producer.recipe.keySet().size(); i++){ 
       if(position == i){ 
        //make content view for each recipe 

          startActivity(makeIntent(position, producer.recipe)); 


       } 
      } 
     } 
    }); 




} 

private Intent makeIntent(int recipe , HashMap<Class<?>, Integer> map){ 
    for(int i = 0; i < map.size(); i++){ 
     for(Class<?> m : map.keySet()){ 
      intent = new Intent(MainActivity.this , m); 
     } 
    } 
    return intent; 
} 
    } 

Et voici le code où je suis en train de passer d'un modèle ou lorsque l'appel est

 package com.mycompany.myapp; 
     import android.app.*; 
     import android.os.*; 
     import android.widget.*; 
     import android.text.*; 
     import android.content.*; 

     public class Extendible extends Activity implements IActivities 
    { 
private LinearLayout layout; 
private ActivityProducer pro; 

public Extendible(){ 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO: Implement this method 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.recipes_layout); 

    pro = new ActivityProducer(); 

    if(pro.getItem() == 1){ 
     chileConLecheLayout(); 
    } else if(pro.getItem() == 2){ 
     arrozLayout(); 
    } 
} 

public void chileConLecheLayout(){ 
    layout = (LinearLayout) findViewById(R.id.recipes_layoutLinearLayout); 
    TextView recipeName = new TextView(Extendible.this); 
    recipeName.setText("Chile Con Leche"); 
    recipeName.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT)); 
    recipeName.setTextSize(60); 
    layout.addView(recipeName); 
} 

public void arrozLayout(){ 
    layout = (LinearLayout) findViewById(R.id.recipes_layoutLinearLayout); 
    TextView recipeName = new TextView(Extendible.this); 
    recipeName.setText("Arroz"); 
    recipeName.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT)); 
    recipeName.setTextSize(60); 
    layout.addView(recipeName); 
} 

public void enchiladasLayout(){ 
    layout = (LinearLayout) findViewById(R.id.recipes_layoutLinearLayout); 
    TextView recipeName = new TextView(Extendible.this); 
    recipeName.setText("Enchiladas"); 
    recipeName.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT)); 
    recipeName.setTextSize(60); 
    layout.addView(recipeName); 
} 
    } 
+0

Où les valeurs véhiculées dans votre carte de recette? – JensS

+0

Il ressemble à recette.put (enchiladas.class, 0); et recette.put (tacos.class, 1); et ainsi de suite dans la classe d'activité principale –

+0

Dois-je poster plus de code ??? –

Répondre

0

Vous utilisez la carte d'une manière étrange; votre getItem() va juste parcourir le keySet et retourner la dernière entrée (notez que les Sets ne sont pas ordonnés, donc c'est plutôt aléatoire).

La façon dont je comprends votre code, vous souhaitez obtenir l'indice associé à une classe, qui ressemblerait à ceci:

public int getItem(Class clazz) { 
    int index = 0; 
    if(recipe.get(clazz) != null) { 
     index = recipe.get(clazz); 
    } 

    return index; 
}