Приложение работает нормально, но вычисление каждой записи в списке занимает некоторое время (я выполняю пинг на сетевых устройствах), поэтому я ищу создание записей на лету. Хотя я ищу решение в Google, я теряюсь: я не могу найти, где мне нужно изменить свой код.
Также я хотел бы иметь текстовое представление или индикатор выполнения, чтобы указать прогресс, но все вычисления выполняются списком, и я получаю только это ino в конце. Объяснения или учебник будут высоко оценены по этим проблемам.
listIPitem = new ArrayList<>();
iPadaptater = new IPadaptater(getActivity(), listIPitem);
ListView list_ip = (ListView) rootView.findViewById(id.listIP);
list_ip.setAdapter(iPadaptater);
DiscoverNetwork dn = new DiscoverNetwork();
dn.passContext(context, listIPitem, iPadaptater)
Вот мой адаптер:
public class IPadaptater extends BaseAdapter {
private List<IPitem> listIPitem;
private LayoutInflater layoutInflater;
Context context;
public IPadaptater(Context c, List<IPitem> objects) {
context = c;
listIPitem = objects;
layoutInflater = LayoutInflater.from(context);
}
public int getCount() {
return listIPitem.size();
}
public Object getItem(int position) {
return listIPitem.get(position);
}
public long getItemId(int position) {
return position;
}
private class ViewIPHolder {
TextView ip_disc;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewIPHolder viewHolder;
if(convertView == null) {
viewHolder = new ViewIPHolder();
convertView = layoutInflater.inflate(R.layout.listview_item_discovery, null);
viewHolder.ip_disc = (TextView) convertView.findViewById(R.id.ip_disc);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewIPHolder) convertView.getTag();
}
viewHolder.ip_disc.setText(listIPitem.get(position).getIPaddress());
notifyDataSetChanged();
return convertView;
}
}
И вот где я обрабатываю свои данные:
listIPitem.clear();
for(int i=1;i<50;i++) {
IPitem iPitem = new IPitem();
ip = network + i;
if(!ping(ip)) continue;
iPitem.setIPaddress(ip);
listIPitem.add(iPitem);
iPadaptater.notifyDataSetChanged();
}
notifyDataSetChanged
вgetView
. 3) цикл for будет перебирать все 50 элементов менее чем за несколько секунд, так что именно вы хотите увидеть? - person OneCricketeer   schedule 29.10.2016ping
? Если это AsyncTask, это займет время. Что касается индикатора выполнения, есть ли он в вашем макете XML? - person OneCricketeer   schedule 29.10.2016ping
, так что да, это может занять больше времени. Я думаю, чтоisReachable
эквивалентно пингу - person OneCricketeer   schedule 29.10.2016ping
блокирует или находится в другом потоке, например - person OneCricketeer   schedule 29.10.2016