リストビューに文字列を追加した後、画面をリフレッシュするときに問題があります。文字列を追加してからadapter.notifyDataSetChanged()
を使用しますが、機能が終了するまで画面は更新されません。私は私がリストビュー私は1つのボタンをタッチすると、関数searchConnectedDispositivesが呼び出される1つの関数の中からAndroid ListViewを更新する方法
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();
}
}
に文字列を追加した後、それはすぐにリフレッシュする必要があります。この機能が終了すると、アクティビティがリフレッシュされます。
pingHost(ipTemp)実装コードとは何ですか? –
バックグラウンドで 'searchConnectedDispositives'を実行していますか?メインスレッドでのみUIを変更できます。 – gesuwall
@ShadabAnsari pingHost(ipTemp)接続を確立すると0を返す(iphostにpingを送る)0 http://pastebin.com/rSzr0MDTここに完全なコード。 –