Ich habe ein Problem mit der Aktualisierung des Bildschirms, nachdem ich eine Zeichenfolge zu meinem Listview hinzufügen. Ich füge die Zeichenfolge hinzu und dann verwende ich adapter.notifyDataSetChanged()
, aber der Bildschirm wird nicht aktualisiert, bis die Funktion beendet ist. Ich brauche es sofort zu aktualisieren, nachdem ich die Zeichenfolge zur Listenansicht hinzufügenWie man Android ListView von innerhalb einer Funktion aktualisiert
public class MainActivity extends AppCompatActivity {
public ArrayList listaConectados;
private TextView estado;
private ListView listaView;
public static int x;
private ArrayAdapter<String> adapter;
private ArrayList<String> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
estado = (TextView)findViewById(R.id.estado_TextView);
listaConectados = new ArrayList<Dispositivos>();
arrayList = new ArrayList<String>();
listaView = (ListView) findViewById(R.id.listaConectados_listView);
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1,arrayList);
listaView.setAdapter(adapter);
}
public void searchConnectedDispositives(View view) {
ArrayList listaParaActualizar = new ArrayList<String>();
int i;
int x;
String ip = getIpAddress();
String ipVariable = ip.substring(0,10);
for(i=0;i<255;i++){
int result=10;
String ipTemp = ipVariable +String.valueOf(i);
try {
result=pingHost(ipTemp);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(result==0){
Dispositivos nuevo = new Dispositivos(ipTemp);
arrayList.add(ipTemp);
adapter.add(ipTemp);
adapter.notifyDataSetChanged();
}
}
Die Funktion searchConnectedDispositives aufgerufen wird, wenn ich eine Taste berühren. Wenn diese Funktion endet, wird die Aktivität aktualisiert.
Was ist der Implementierungscode pingHost (ipTemp)? –
führen Sie 'searchConnectedDispositives' im Hintergrund aus? Sie können nur Ihre Benutzeroberfläche im Hauptthread ändern. – gesuwall
@ShadabAnsari pingHost (ipTemp) zurückgeben 0 wenn Verbindung herstellen (Senden von Ping zu iphost) zurück 0 http://pastebin.com/rSzr0MDT hier der vollständige Code. –