package com.miris.ui.activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.miris.R;
import com.miris.net.ItnewsBanner;
import com.miris.net.ItnewsListData;
import com.miris.ui.adapter.ITnewAdapter;
import com.miris.ui.view.BannerLayout;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import butterknife.InjectView;
/**
* Created by Miris on 09.02.15.
*/
public class ITnewActivity extends BaseActivity
implements ITnewAdapter.OnNewsItemClickListener{
@InjectView(R.id.rvAddress)
RecyclerView rvAddress;
LinearLayoutManager linearLayoutManager;
private ITnewAdapter iTnewAdapter;
ProgressDialog myLoadingDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_itnews);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
setupFeed();
}
private void setupFeed() {
linearLayoutManager = new LinearLayoutManager(this) {
@Override
protected int getExtraLayoutSpace(RecyclerView.State state) {
return 300;
}
};
rvAddress.setLayoutManager(linearLayoutManager);
new loadDataTask().execute();
}
@Override
public void onSendImg(View v, int position) {
Intent intent = new Intent(this,ITnewDetail.class);
intent.putExtra("url", itnewsListDatas.get(position).getlink());
intent.putExtra("title", itnewsListDatas.get(position).getTitle());
intent.putExtra("img", itnewsListDatas.get(position).getImg());
startActivity(intent);
}
@Override
public void onSendTitle(View v, int position) {
Intent intent = new Intent(this,ITnewDetail.class);
intent.putExtra("url", itnewsListDatas.get(position).getlink());
intent.putExtra("title", itnewsListDatas.get(position).getTitle());
intent.putExtra("img", itnewsListDatas.get(position).getImg());
startActivity(intent);
}
@Override
public void onSendName(View v, int position) {
Intent intent = new Intent(this,ITnewDetail.class);
intent.putExtra("url", itnewsListDatas.get(position).getlink());
intent.putExtra("title", itnewsListDatas.get(position).getTitle());
intent.putExtra("img", itnewsListDatas.get(position).getImg());
startActivity(intent);
}
@Override
public void onSendLinearLayout(View v, int position) {
Intent intent = new Intent(this,ITnewDetail.class);
intent.putExtra("url", itnewsListDatas.get(position).getlink());
intent.putExtra("title", itnewsListDatas.get(position).getTitle());
intent.putExtra("img", itnewsListDatas.get(position).getImg());
startActivity(intent);
}
private void showDialog() {
myLoadingDialog = new ProgressDialog(ITnewActivity.this);
myLoadingDialog.setMessage(getString(R.string.show_lodingbar));
myLoadingDialog.setIndeterminate(false);
myLoadingDialog.setCancelable(false);
myLoadingDialog.show();
}
class loadDataTask extends AsyncTask<Void, Void, Void> {
//다음 IT뉴스 리스트
String webItpage = "http://media.daum.net/syndication/digital.rss";
//노컷뉴스 속보 배너
String webItpage_banner = "http://rss.nocutnews.co.kr/nocutnews.xml";
@Override
protected void onPreExecute() {
showDialog();
}
@Override
protected Void doInBackground(Void... arg0) {
itnewsListDatas = new ArrayList<ItnewsListData>();
itnewsBanners = new ArrayList<ItnewsBanner>();
try {
DocumentBuilderFactory builderFactory1 = DocumentBuilderFactory.newInstance();
DocumentBuilder builder1 = builderFactory1.newDocumentBuilder();
URL url1 = new URL(webItpage_banner);
HttpURLConnection conn1 = (HttpURLConnection) url1.openConnection();
InputStream instream1 = conn1.getInputStream();
Document document1 = builder1.parse(instream1);
Element docEle1 = document1.getDocumentElement();
NodeList nodelist1 = docEle1.getElementsByTagName("item");
if ((nodelist1 != null) && (nodelist1.getLength() > 0)) {
for (int i = 0; i < nodelist1.getLength(); i++) {
Element entry1 = (Element)nodelist1.item(i);
String title1 = entry1.getElementsByTagName("title").item(0).getTextContent();
String description1 = entry1.getElementsByTagName("description").item(0).getTextContent();
String img1 = entry1.getElementsByTagName("image").item(0).getTextContent();
String link1 = entry1.getElementsByTagName("link").item(0).getTextContent();
if (img1.equals("")){
continue;
}
itnewsBanners.add(new ItnewsBanner(
img1,
title1,
description1,
link1));
}
}
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
URL url = new URL(webItpage);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
InputStream instream = conn.getInputStream();
Document document = builder.parse(instream);
Element docEle = document.getDocumentElement();
NodeList nodelist = docEle.getElementsByTagName("item");
if ((nodelist != null) && (nodelist.getLength() > 0)) {
for (int i = 0; i < nodelist.getLength(); i++) {
Element entry = (Element)nodelist.item(i);
String img = "";
String title = entry.getElementsByTagName("title").item(0).getTextContent();
String description = entry.getElementsByTagName("description").item(0).getTextContent();
if (entry.getElementsByTagName("enclosure").getLength() > 0) {
img = entry.getElementsByTagName("enclosure").item(0).getAttributes().getNamedItem("url").getTextContent();
}
String link = entry.getElementsByTagName("link").item(0).getTextContent();
String dueDate = entry.getElementsByTagName("pubDate").item(0).getTextContent();
String author = entry.getElementsByTagName("dc:creator").item(0).getTextContent();
itnewsListDatas.add(new ItnewsListData(
img,
title,
description,
link,
dueDate,
author));
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
catch (SAXException e) {
e.printStackTrace();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
iTnewAdapter = new ITnewAdapter(ITnewActivity.this, itnewsListDatas);
rvAddress.setAdapter(iTnewAdapter);
iTnewAdapter.setOnNewsItemClickListener(ITnewActivity.this);
BannerLayout bannerLayout = (BannerLayout) findViewById(R.id.banner);
final List<String> urls = new ArrayList<>();
final List<String> urlstext = new ArrayList<>();
for (int i= 0; i < 5; i++) {
urls.add(itnewsBanners.get(i).getImg());
urlstext.add(itnewsBanners.get(i).getTitle());
}
bannerLayout.setViewUrls(urls, urlstext);
bannerLayout.setOnBannerItemClickListener(new BannerLayout.OnBannerItemClickListener() {
@Override
public void onItemClick(int position) {
Intent intent = new Intent(getApplication(),ITnewDetail.class);
intent.putExtra("url", itnewsBanners.get(position).getlink());
intent.putExtra("title", itnewsBanners.get(position).getTitle());
intent.putExtra("img", itnewsBanners.get(position).getImg());
startActivity(intent);
}
});
rvAddress.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
if (myLoadingDialog != null) {
myLoadingDialog.dismiss();
}
iTnewAdapter.updateItems(true);
}
}
}