Search in sources :

Example 1 with NodeCategory

use of org.mazhuang.guanggoo.data.entity.NodeCategory in project guanggoo-android by mzlogin.

the class NodesCloudPresenter method getNodesCloud.

@Override
public void getNodesCloud() {
    mView.startLoading();
    NetworkTaskScheduler.getInstance().execute(new GetNodesCloudTask(new OnResponseListener<List<NodeCategory>>() {

        @Override
        public void onSucceed(List<NodeCategory> data) {
            mView.stopLoading();
            mView.onGetNodesCloudSucceed(data);
        }

        @Override
        public void onFailed(String msg) {
            mView.stopLoading();
            mView.onGetNodesCloudFailed(msg);
        }
    }));
}
Also used : OnResponseListener(org.mazhuang.guanggoo.data.OnResponseListener) NodeCategory(org.mazhuang.guanggoo.data.entity.NodeCategory) List(java.util.List) GetNodesCloudTask(org.mazhuang.guanggoo.data.task.GetNodesCloudTask)

Example 2 with NodeCategory

use of org.mazhuang.guanggoo.data.entity.NodeCategory in project guanggoo-android by mzlogin.

the class NodesCloudAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(NodesCloudAdapter.ViewHolder holder, int position) {
    final NodeCategory category = mData.get(position);
    holder.mTitleTextView.setText(category.getLabel());
    holder.mNodesGridView.setAdapter(new BaseAdapter() {

        @Override
        public int getCount() {
            return (category.getNodes() == null) ? 0 : category.getNodes().size();
        }

        @Override
        public Object getItem(int position) {
            return category.getNodes().get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ChildViewHolder childViewHolder;
            if (convertView == null) {
                convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.child_nodes_cloud, null);
                childViewHolder = new ChildViewHolder(convertView);
                convertView.setTag(childViewHolder);
            } else {
                childViewHolder = (ChildViewHolder) convertView.getTag();
            }
            childViewHolder.mTitleTextView.setText(category.getNodes().get(position).getTitle());
            return convertView;
        }
    });
    holder.mNodesGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (mListener != null) {
                Node node = category.getNodes().get(position);
                if (mNodeClickListener != null) {
                    mNodeClickListener.onNodeClick(node);
                } else {
                    mListener.openPage(node.getUrl(), node.getTitle());
                }
            }
        }
    });
}
Also used : ViewGroup(android.view.ViewGroup) Node(org.mazhuang.guanggoo.data.entity.Node) GridView(android.widget.GridView) BindView(butterknife.BindView) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) View(android.view.View) AdapterView(android.widget.AdapterView) NodeCategory(org.mazhuang.guanggoo.data.entity.NodeCategory) AdapterView(android.widget.AdapterView) BaseAdapter(android.widget.BaseAdapter)

Example 3 with NodeCategory

use of org.mazhuang.guanggoo.data.entity.NodeCategory in project guanggoo-android by mzlogin.

the class GetNodesCloudTask method run.

@Override
public void run() {
    Document doc;
    try {
        doc = get(ConstantUtil.NODES_CLOUD_URL);
    } catch (IOException e) {
        e.printStackTrace();
        failedOnUI(e.getMessage());
        return;
    }
    Elements nodesCategoryList = doc.select("div.nodes-cloud ul li");
    if (nodesCategoryList.isEmpty()) {
        failedOnUI("找不到节点列表");
        return;
    }
    List<NodeCategory> nodesCloud = new ArrayList<>();
    for (Element element : nodesCategoryList) {
        Elements labelElement = element.select("label");
        Elements nodesElement = element.select("span.nodes a");
        if (!labelElement.isEmpty() && !nodesElement.isEmpty()) {
            List<Node> nodes = new ArrayList<>();
            for (Element nodeElement : nodesElement) {
                Node node = new Node();
                node.setTitle(nodeElement.text());
                node.setUrl(nodeElement.absUrl("href"));
                nodes.add(node);
            }
            if (!nodes.isEmpty()) {
                NodeCategory category = new NodeCategory();
                category.setLabel(labelElement.text());
                category.setNodes(nodes);
                nodesCloud.add(category);
            }
        }
    }
    if (!nodesCloud.isEmpty()) {
        successOnUI(nodesCloud);
    } else {
        failedOnUI("节点列表为空");
    }
}
Also used : NodeCategory(org.mazhuang.guanggoo.data.entity.NodeCategory) Element(org.jsoup.nodes.Element) Node(org.mazhuang.guanggoo.data.entity.Node) ArrayList(java.util.ArrayList) IOException(java.io.IOException) Document(org.jsoup.nodes.Document) Elements(org.jsoup.select.Elements)

Aggregations

NodeCategory (org.mazhuang.guanggoo.data.entity.NodeCategory)3 Node (org.mazhuang.guanggoo.data.entity.Node)2 RecyclerView (android.support.v7.widget.RecyclerView)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 AdapterView (android.widget.AdapterView)1 BaseAdapter (android.widget.BaseAdapter)1 GridView (android.widget.GridView)1 TextView (android.widget.TextView)1 BindView (butterknife.BindView)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Document (org.jsoup.nodes.Document)1 Element (org.jsoup.nodes.Element)1 Elements (org.jsoup.select.Elements)1 OnResponseListener (org.mazhuang.guanggoo.data.OnResponseListener)1 GetNodesCloudTask (org.mazhuang.guanggoo.data.task.GetNodesCloudTask)1