package com.wifi.server.sender; import android.net.wifi.p2p.WifiP2pDevice; import android.net.wifi.p2p.WifiP2pDeviceList; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.TextView; import com.wifi.server.R; import com.wifi.server.RecyclerItemClickListener; import com.wifi.server.WifiListAdapter; import com.wifi.server.base.BaseFragment; import com.wifi.server.dialogs.AnimationView; import java.util.ArrayList; public class DeviceListFragment extends BaseFragment implements RecyclerItemClickListener.OnItemClickListener { private View progressView; private TextView emptyView; private AnimationView animationView; private RecyclerView recyclerView; private WifiListAdapter wifiListAdapter; private SwipeRefreshLayout swipeRefreshLayout; public static DeviceListFragment newInstance() { DeviceListFragment fragment = new DeviceListFragment(); return fragment; } @Override public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { return enter ? AnimationUtils.loadAnimation(activity, R.anim.slide_in_right) : super.onCreateAnimation(transit, enter, nextAnim); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_device_list, container, false); progressView = rootView.findViewById(R.id.scan_progress); animationView = rootView.findViewById(R.id.gif1); recyclerView = rootView.findViewById(R.id.scanned_list); recyclerView.setLayoutManager(new LinearLayoutManager(activity)); wifiListAdapter = new WifiListAdapter(activity, new ArrayList<WifiP2pDevice>()); recyclerView.setAdapter(wifiListAdapter); emptyView = rootView.findViewById(R.id.empty_view); swipeRefreshLayout = rootView.findViewById(R.id.swipeRefreshLayout); ((SenderActivity)activity).wifiP2PService.onCreate(); ((SenderActivity)activity).wifiP2PService.onResume(); return rootView; } public void onScanStarted() { activity.runOnUiThread(new Runnable() { @Override public void run() { progressView.setVisibility(View.VISIBLE); animationView.setMovieResource(R.drawable.loader_2); } }); } public void onScanCompleted() { activity.runOnUiThread(new Runnable() { @Override public void run() { progressView.setVisibility(View.GONE); } }); } public void onDeviceAvailable(final WifiP2pDeviceList wifiP2pDeviceList) { activity.runOnUiThread(new Runnable() { @Override public void run() { if(recyclerView.isEnabled()) { progressView.setVisibility(View.GONE); emptyView.setVisibility(View.GONE); recyclerView.setVisibility(View.VISIBLE); swipeRefreshLayout.setVisibility(View.VISIBLE); wifiListAdapter.addDevices(new ArrayList<>(wifiP2pDeviceList.getDeviceList())); recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(activity, DeviceListFragment.this)); } } }); } public void onNoDeviceAvailable() { activity.runOnUiThread(new Runnable() { @Override public void run() { if(wifiListAdapter.getItemCount() == 0) { emptyView.setVisibility(View.VISIBLE); recyclerView.setVisibility(View.GONE); swipeRefreshLayout.setVisibility(View.GONE); } else { swipeRefreshLayout.setVisibility(View.VISIBLE); recyclerView.setVisibility(View.VISIBLE); emptyView.setVisibility(View.GONE); } } }); } @Override public void onItemClick(View view, int position) { ((SenderActivity)activity).redirectToProcessScreen(wifiListAdapter.getItem(position)); recyclerView.setEnabled(false); } }