Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class HostBean implements Parcelable {
- public static final String EXTRA = ActivityMain.PKG + ".extra";
- public static final String EXTRA_POSITION = ActivityMain.PKG + ".extra_position";
- public static final String EXTRA_HOST = ActivityMain.PKG + ".extra_host";
- public static final String EXTRA_TIMEOUT = ActivityMain.PKG + ".network.extra_timeout";
- public static final String EXTRA_HOSTNAME = ActivityMain.PKG + ".extra_hostname";
- public static final String EXTRA_BANNERS = ActivityMain.PKG + ".extra_banners";
- public static final String EXTRA_PORTSO = ActivityMain.PKG + ".extra_ports_o";
- public static final String EXTRA_PORTSC = ActivityMain.PKG + ".extra_ports_c";
- public static final String EXTRA_SERVICES = ActivityMain.PKG + ".extra_services";
- public static final int TYPE_GATEWAY = 0;
- public static final int TYPE_COMPUTER = 1;
- public int deviceType = TYPE_COMPUTER;
- public int isAlive = 1;
- public int position = 0;
- public int responseTime = 0; // ms
- public String ipAddress = null;
- public String hostname = null;
- public String hostsection = null;
- public String hardwareAddress = NetInfo.NOMAC;
- public String nicVendor = "Unknown";
- public String os = "Unknown";
- public HashMap<Integer, String> services = null;
- public HashMap<Integer, String> banners = null;
- public ArrayList<Integer> portsOpen = null;
- public ArrayList<Integer> portsClosed = null;
- public HostBean() {
- // New object
- }
- public HostBean(Parcel in) {
- // Object from parcel
- readFromParcel(in);
- }
- public int describeContents() {
- return 0;
- }
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(deviceType);
- dest.writeInt(isAlive);
- dest.writeString(ipAddress);
- dest.writeString(hostname);
- dest.writeString( hostsection );
- dest.writeString(hardwareAddress);
- dest.writeString(nicVendor);
- dest.writeString(os);
- dest.writeInt(responseTime);
- dest.writeInt(position);
- dest.writeMap(services);
- dest.writeMap(banners);
- dest.writeList(portsOpen);
- dest.writeList(portsClosed);
- }
- private void readFromParcel(Parcel in) {
- deviceType = in.readInt();
- isAlive = in.readInt();
- ipAddress = in.readString();
- hostname = in.readString();
- hardwareAddress = in.readString();
- nicVendor = in.readString();
- os = in.readString();
- hostsection=in.readString();
- responseTime = in.readInt();
- position = in.readInt();
- services = in.readHashMap(null);
- banners = in.readHashMap(null);
- portsOpen = in.readArrayList(Integer.class.getClassLoader());
- portsClosed = in.readArrayList(Integer.class.getClassLoader());
- }
- @SuppressWarnings("unchecked")
- public static final Creator CREATOR = new Creator() {
- public HostBean createFromParcel(Parcel in) {
- return new HostBean(in);
- }
- public HostBean[] newArray(int size) {
- return new HostBean[size];
- }
- };
- }
- public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.SimpleViewHolder> {
- private final Context mContext;
- private ArrayList<HostBean> mData;
- final HostBean host = new HostBean();
- public void add(HostBean s,int position) {
- position = position == -1 ? getItemCount() : position;
- host.hostsection=s;
- mData.add(position,s);
- notifyItemInserted(position);
- }
- public void remove(int position){
- if (position < getItemCount() ) {
- mData.remove(position);
- notifyItemRemoved(position);
- }
- }
- public static class SimpleViewHolder extends RecyclerView.ViewHolder {
- public final TextView mac;
- public final TextView vendor;
- public final TextView ip;
- public SimpleViewHolder(View view) {
- super(view);
- ip = (TextView) view.findViewById(R.id.ip);
- mac = (TextView) view.findViewById(R.id.mac);
- vendor = (TextView) view.findViewById(R.id.vendor);
- }
- }
- public SimpleAdapter(Context context, List<HostBean> data) {
- mContext = context;
- if (data != null)
- mData = new ArrayList<HostBean>();
- }
- public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- final View view = LayoutInflater.from(mContext).inflate(R.layout.list_host, parent, false);
- return new SimpleViewHolder(view);
- }
- @Override
- public void onBindViewHolder(SimpleViewHolder holder, final int position) {
- holder.ip.setText( (CharSequence) mData.get(position) );
- holder.mac.setText( "" );
- holder.vendor.setText( "" );
- }
- @Override
- public int getItemCount() {
- return mData.size();
- }
- }
- public class SimpleSectionedRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- private final Context mContext;
- private static final int SECTION_TYPE = 0;
- private boolean mValid = true;
- private int mSectionResourceId;
- private int mTextResourceId;
- private LayoutInflater mLayoutInflater;
- private RecyclerView.Adapter mBaseAdapter;
- private SparseArray<Section> mSections = new SparseArray<Section>();
- public SimpleSectionedRecyclerViewAdapter(Context context, int sectionResourceId, int textResourceId,
- RecyclerView.Adapter baseAdapter) {
- mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mSectionResourceId = sectionResourceId;
- mTextResourceId = textResourceId;
- mBaseAdapter = baseAdapter;
- mContext = context;
- mBaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
- @Override
- public void onChanged() {
- mValid = mBaseAdapter.getItemCount()>0;
- notifyDataSetChanged();
- }
- @Override
- public void onItemRangeChanged(int positionStart, int itemCount) {
- mValid = mBaseAdapter.getItemCount()>0;
- notifyItemRangeChanged(positionStart, itemCount);
- }
- @Override
- public void onItemRangeInserted(int positionStart, int itemCount) {
- mValid = mBaseAdapter.getItemCount()>0;
- notifyItemRangeInserted(positionStart, itemCount);
- }
- @Override
- public void onItemRangeRemoved(int positionStart, int itemCount) {
- mValid = mBaseAdapter.getItemCount()>0;
- notifyItemRangeRemoved(positionStart, itemCount);
- }
- });
- }
- public static class SectionViewHolder extends RecyclerView.ViewHolder {
- public TextView title;
- public SectionViewHolder(View view, int mTextResourceid) {
- super(view);
- title = (TextView) view.findViewById(mTextResourceid);
- }
- }
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int typeView) {
- if (typeView == SECTION_TYPE) {
- final View view = LayoutInflater.from(mContext).inflate(mSectionResourceId, parent, false);
- return new SectionViewHolder(view,mTextResourceId);
- }else{
- return mBaseAdapter.onCreateViewHolder(parent, typeView -1);
- }
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder sectionViewHolder, int position) {
- if (isSectionHeaderPosition(position)) {
- ((SectionViewHolder)sectionViewHolder).title.setText(mSections.get(position).title);
- }else{
- mBaseAdapter.onBindViewHolder(sectionViewHolder,sectionedPositionToPosition(position));
- }
- }
- @Override
- public int getItemViewType(int position) {
- return isSectionHeaderPosition(position)
- ? SECTION_TYPE
- : mBaseAdapter.getItemViewType(sectionedPositionToPosition(position)) +1 ;
- }
- public static class Section {
- int firstPosition;
- int sectionedPosition;
- CharSequence title;
- public Section(int firstPosition, CharSequence title) {
- this.firstPosition = firstPosition;
- this.title = title;
- }
- public CharSequence getTitle() {
- return title;
- }
- }
- public void setSections(Section[] sections) {
- mSections.clear();
- Arrays.sort(sections, new Comparator<Section>() {
- @Override
- public int compare(Section o, Section o1) {
- return (o.firstPosition == o1.firstPosition)
- ? 0
- : ((o.firstPosition < o1.firstPosition) ? -1 : 1);
- }
- });
- int offset = 0; // offset positions for the headers we're adding
- for (Section section : sections) {
- section.sectionedPosition = section.firstPosition + offset;
- mSections.append(section.sectionedPosition, section);
- ++offset;
- }
- notifyDataSetChanged();
- }
- public int positionToSectionedPosition(int position) {
- int offset = 0;
- for (int i = 0; i < mSections.size(); i++) {
- if (mSections.valueAt(i).firstPosition > position) {
- break;
- }
- ++offset;
- }
- return position + offset;
- }
- public int sectionedPositionToPosition(int sectionedPosition) {
- if (isSectionHeaderPosition(sectionedPosition)) {
- return RecyclerView.NO_POSITION;
- }
- int offset = 0;
- for (int i = 0; i < mSections.size(); i++) {
- if (mSections.valueAt(i).sectionedPosition > sectionedPosition) {
- break;
- }
- --offset;
- }
- return sectionedPosition + offset;
- }
- public boolean isSectionHeaderPosition(int position) {
- return mSections.get(position) != null;
- }
- @Override
- public long getItemId(int position) {
- return isSectionHeaderPosition(position)
- ? Integer.MAX_VALUE - mSections.indexOfKey(position)
- : mBaseAdapter.getItemId(sectionedPositionToPosition(position));
- }
- @Override
- public int getItemCount() {
- return (mValid ? mBaseAdapter.getItemCount() + mSections.size() : 0);
- }
- }
- hosts = new ArrayList<HostBean>();
- RecyclerView list =findViewById(R.id.output);
- list.setHasFixedSize( true );
- list.setLayoutManager( new LinearLayoutManager( this ) );
- list.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL));
- SimpleAdapter mAdapter = new SimpleAdapter(this,hosts);
- List<SimpleSectionedRecyclerViewAdapter.Section> sections =
- new ArrayList<SimpleSectionedRecyclerViewAdapter.Section>();
- //Sections
- sections.add(new SimpleSectionedRecyclerViewAdapter.Section(0,"Know Devices"));
- sections.add(new SimpleSectionedRecyclerViewAdapter.Section(5,"Unknown Devices"));
- SimpleSectionedRecyclerViewAdapter.Section[] dummy = new SimpleSectionedRecyclerViewAdapter.Section[sections.size()];
- SimpleSectionedRecyclerViewAdapter mSectionedAdapter = new
- SimpleSectionedRecyclerViewAdapter(this,R.layout.section,R.id.section_text,mAdapter);
- mSectionedAdapter.setSections(sections.toArray(dummy));
- list.setAdapter( mSectionedAdapter );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement