2016-06-29 15 views
0

Ich versuche, eine GridView durch Klicken auf eine Schaltfläche neu zu generieren und füllen neue Array von Zahlen zu meinem GridView. Hier ist mein Code ohne lesen new Array:Hinzufügen neuer Array von Zahlen zu Gridview nach der Verwendung von OnclickItemListener

gridView = (GridView) findViewById(R.id.gridView); 
final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, 
      android.R.layout.simple_list_item_1,randomArray(arrayNumbers)); 

gridView.setAdapter(adapter); 

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      gridView=(GridView)findViewById(R.id.gridView); 
      Integer values=Integer.parseInt(gridView.getItemAtPosition(position).toString()); 
      y.setText(String.valueOf(value)); 

      if (a==values) { 
       Collections.shuffle(randomArray(arrayNumbers));//xao tron vi tri cua cac so trong gridview 
       adapter.notifyDataSetChanged();//reload lai gridview 
       a = a + r.nextInt(11);//tang gia tri a 
       x.setText(String.valueOf(a)); 
       System.out.println(a); 
       //Todo set gia tri a vao mang random(1) vua tao moi 
       Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show(); 
      } 

     } 
}) 

und hier ist meine Random Methode:

public static ArrayList randomArray(int[] a){ 
    Random r= new Random(); 
    List<Integer> list=new ArrayList<>(); 
    for (int j=1;j<25;){ 
     int random=((int)(Math.random()*100))+1; 
     if (!list.contains(random)){ 
      list.add (random); 
      j++; 
     } 
    } 
    list.add(30); 

    return (ArrayList) list; 
} 

Antwort

0

Sie einen Verweis auf die Liste halten kann:

numbersArrayList = randomArray(arrayNumbers); 
final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, 
     android.R.layout.simple_list_item_1, numbersArrayList); 

Und dann ohne Änderung Die Referenz können Sie die Elemente in Ihrem OnItemClickListener aktualisieren:

numbersArrayList.clear(); 
List<Integer> newList = randomArray(arrayNumbers); 
Collections.shuffle(newList); 
numbersArrayList.addAll(newList); 
adapter.notifyDataSetChanged(); 
+0

Entschuldigung, aber meine Sammlung wird nicht für die Void-Methode angewendet, was sollte ich tun? –

+0

Ich habe die Antwort bearbeitet, überprüfe sie jetzt –

+0

danke, es hat funktioniert. Noch eine Frage bitte. –