You are on page 1of 14

Revistas UTEQ

Villafuerte Jonathan
Manifest

<uses-permission android:name="android.permission.INTERNET" />


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2
Activity_main

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/lbltitulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#445c3a"
android:lineSpacingExtra="14sp"
android:paddingTop="3dp"
android:paddingBottom="3dp" <ListView
android:text="Lista de Volúmenes" android:id="@+id/lstvolumenes"
android:textAlignment="center" android:layout_width="match_parent"
android:textColor="#d07f17" android:layout_height="match_parent"
android:textColorHighlight="@color/colorPrimaryDark" android:layout_below="@+id/lbltitulo"
android:textColorHint="@color/colorPrimary" android:layout_alignParentStart="true"
android:textSize="24sp" android:layout_alignParentBottom="true"
android:textStyle="bold" android:layout_marginStart="0dp"
android:visibility="visible" android:layout_marginTop="10dp"
3 app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="0dp" />
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" </RelativeLayout>
app:layout_constraintTop_toTopOf="parent" />
Layout_item

<?xml version="1.0" encoding="utf-8"?> android:layout_height="wrap_content"


<LinearLayout android:text="Título"
xmlns:android="http://schemas.android.com/apk/res/android" android:textSize="17sp"
android:layout_width="fill_parent" android:textStyle="bold" />
android:layout_height="fill_parent"
android:orientation="horizontal" <TextView
android:padding="3dp" android:id="@+id/LblVolNum"
android:paddingStart="3dp" android:layout_width="match_parent"
android:paddingTop="3dp" android:layout_height="wrap_content"
android:paddingEnd="3dp" android:text="Volúmen"
android:paddingBottom="3dp"> android:textSize="15sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/imgPortada" <TextView
android:layout_width="100dp" android:id="@+id/lblFecha"
android:layout_height="100dp" /> android:layout_width="match_parent"
android:layout_height="wrap_content"
<LinearLayout android:text="Fecha de publicación"
xmlns:android="http://schemas.android.com/apk/res/android" android:textSize="14sp"
android:layout_width="match_parent" android:textStyle="normal" />
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp"> </LinearLayout>

<TextView
android:id="@+id/lblTitulo" </LinearLayout>
android:layout_width="match_parent"
4
Activity_articulos

<RelativeLayout android:textColorHint="@color/colorPrimary"
xmlns:android="http://schemas.android.com/apk/res/android" android:textSize="24sp"
xmlns:app="http://schemas.android.com/apk/res-auto" android:textStyle="bold"
xmlns:tools="http://schemas.android.com/tools" android:visibility="visible"
android:layout_width="match_parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_height="match_parent" app:layout_constraintLeft_toLeftOf="parent"
tools:context=".ArticulosActivity"> app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ListView
<TextView android:id="@+id/lstarticulos"
android:id="@+id/lbltituloRevista" android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_height="wrap_content" android:layout_below="@+id/lbltituloRevista"
android:background="#445c3a" android:layout_alignParentStart="true"
android:lineSpacingExtra="14sp" android:layout_alignParentBottom="true"
android:paddingTop="3dp" android:layout_marginStart="0dp"
android:paddingBottom="3dp" android:layout_marginTop="8dp"
android:text="Título de revista" android:layout_marginBottom="0dp" />
android:textAlignment="center"
android:textColor="#d07f17" </RelativeLayout>
android:textColorHighlight="@color/colorPrimaryDark"

5
layout_articulos

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/imgPDF"
android:layout_width="100dp"
android:layout_height="100dp" />

<LinearLayout <TextView
xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lblSeccion"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:text="Volúmen"
android:padding="5dp"> android:textColor="@color/colorAccent"
android:textSize="15sp"
<TextView android:textStyle="bold" />
android:id="@+id/lblTitulo"
android:layout_width="match_parent" <TextView
android:layout_height="wrap_content" android:id="@+id/lblFecha"
android:text="Título" android:layout_width="match_parent"
android:textColor="@color/colorPrimaryDark" android:layout_height="wrap_content"
6 android:textSize="17sp" android:text="Fecha de publicación"
android:textStyle="bold" /> android:textColor="@color/colorPrimaryDark"
android:textSize="14sp"
Clase Articulos

public class Articulos {


public String Titulo;
public String Fecha;
public String Seccion;
public String UrlPdf;

public String getTitulo() { return Titulo;


}

public String getFecha() { return Fecha;


}

public String getSeccion() { return Seccion;


}

public String getUrlPdf() { return UrlPdf;


}

public Articulos(JSONObject a) throws JSONException {


Titulo = a.getString("title");
Fecha = a.getString("date_published");
Seccion = a.getString("section_title");
UrlPdf = a.getString("pdf");
}

public static ArrayList<Articulos> JsonObjectsBuild(JSONArray datos) throws JSONException


{
ArrayList<Articulos> articulos = new ArrayList<>();
for (int i = 0; i < datos.length(); i++) {
articulos.add(new Articulos(datos.getJSONObject(i)));
}
7 return articulos;
}
}
Clase Volumen

public class Volumen {


private String titulo; public static ArrayList<Volumen> JsonObjectsBuild(JSONArray datos)
private String VolNUm; throws JSONException
private String Vol; {
private String Num; ArrayList<Volumen> volumenes = new ArrayList<>();
private String url; for (int i = 0; i < datos.length(); i++) {
private String fecha; volumenes.add(new Volumen(datos.getJSONObject(i)));
}
return volumenes;
public Volumen(JSONObject a) throws JSONException { }
titulo = a.getString("title"); }
VolNUm = "Vol: "+ a.getString("volume")
+ " N°: " + a.getString("number");
url = a.getString("portada");
fecha = a.getString("date_published");
Vol = a.getString("volume");
Num = a.getString("number");
}

public String getVol() { return Vol;


}

public String getNum() { return Num;


}

public String getVolNUm() { return VolNUm;


}

public String getFecha() { return fecha;


}

public String getTitulo(){ return titulo;


}
8
public String getURL(){ return url;
}
Adapter Artículos
public class AdapterArticulos extends ArrayAdapter<Articulos> {

ImageView imageView;

public AdapterArticulos(Context context, ArrayList<Articulos> datos) {


super(context, R.layout.layout_articulos, datos);
}

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = LayoutInflater.from(getContext());


View item = inflater.inflate(R.layout.layout_articulos, null);

TextView lblTitulo = (TextView)item.findViewById(R.id.lblTitulo);


lblTitulo.setText(getItem(position).getTitulo());

TextView lblFecha = (TextView)item.findViewById(R.id.lblFecha);


lblFecha.setText(getItem(position).getFecha());

TextView lblSeccion = (TextView)item.findViewById(R.id.lblSeccion);


lblSeccion.setText(getItem(position).getSeccion());

TextView lblPdf = (TextView)item.findViewById(R.id.lblPdf);


lblPdf.setText(getItem(position).getUrlPdf());

ImageView imageView = (ImageView)item.findViewById(R.id.imgPDF);


Glide.with(this.getContext())
.load(R.drawable.img_pdf)
.error(R.drawable.img_pdf)
.into(imageView);

return(item);
}
}
9
Adapter Volumen

public class AdapterVolumenes extends ArrayAdapter<Volumen> {

public AdapterVolumenes(Context context, ArrayList<Volumen> datos) {


super(context, R.layout.layout_item, datos);
}

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = LayoutInflater.from(getContext());


View item = inflater.inflate(R.layout.layout_item, null);

TextView lblTitulo = (TextView)item.findViewById(R.id.lblTitulo);


lblTitulo.setText(getItem(position).getTitulo());

TextView lblVolNum = (TextView)item.findViewById(R.id.LblVolNum);


lblVolNum.setText(getItem(position).getVolNUm());

TextView lblfecha = (TextView)item.findViewById(R.id.lblFecha);


lblfecha.setText(getItem(position).getFecha());

ImageView imageView = (ImageView)item.findViewById(R.id.imgPortada);


Glide.with(this.getContext())
.load(getItem(position).getURL())
.error(R.drawable.img_not_found)
.into(imageView);

return(item);
}
}

10
Main Activity
public class MainActivity extends AppCompatActivity implements Asynchtask, AdapterView.OnItemClickListener {

ListView listView;

ArrayList<Volumen> data = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.lstvolumenes);

Map<String, String> datos = new HashMap<String, String>();


WebService ws= new WebService("http://revistas.uteq.edu.ec/ws/getrevistas.php",
datos, this, this);
ws.execute("");

@Override
public void processFinish(String result) throws JSONException { @Override
//Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show(); public void onItemClick(AdapterView<?> parent, View view, int
JSONObject jsonObject = new JSONObject(result); position, long id) {
JSONArray jsonArray = jsonObject.getJSONArray("issues"); Intent intent = new Intent(MainActivity.this,
for (int i=0; i<jsonArray.length(); i++) ArticulosActivity.class);
{ Bundle b = new Bundle();
JSONObject obj = jsonArray.getJSONObject(i); b.putString("Volum", data.get(position).getVol());
Volumen volumen = new Volumen(obj); b.putString("Num", data.get(position).getNum());
data = volumen.JsonObjectsBuild(jsonArray); b.putString("Revista",data.get(position).getTitulo());
} intent.putExtras(b);
AdapterVolumenes adapterVolumenes = new AdapterVolumenes(this, data); startActivity(intent);
listView.setAdapter(adapterVolumenes); }
11 }
listView.setOnItemClickListener(this);
}
Articulos Activity

public class ArticulosActivity extends AppCompatActivity implements Asynchtask, AdapterView.OnItemClickListener

public boolean isDownloadManagerAvailable()


@Override {
protected void onCreate(Bundle savedInstanceState) { if (Build.VERSION.SDK_INT >= 23) {
super.onCreate(savedInstanceState); if
setContentView(R.layout.activity_articulos); (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Bundle bundle = this.getIntent().getExtras(); Log.e("Permission error","You have permission");
txtRevista = (TextView)findViewById(R.id.lbltituloRevista); return true;
txtRevista.setText(bundle.getString("Revista")); } else {

Map<String, String> datos = new HashMap<String, String>(); Log.e("Permission error","You have asked for permission");
WebService ws= new ActivityCompat.requestPermissions(this, new String[]
WebService("http://revistas.uteq.edu.ec/ws/getarticles.php?" + {Manifest.permission.WRITE_EXTERNAL_STORAGE},
"volumen="+ bundle.getString("Volum") + 1);
"&num="+ bundle.getString("Num"), return false;
datos, this, this); }
ws.execute(""); }
else { //you dont need to worry about these stuff below api level 23
listView = (ListView)findViewById(R.id.lstarticulos); Log.e("Permission error","You already have the permission");
} return true;
}
}

12
Articulos Activity

public void processFinish(String result) throws JSONException {


JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("articles");
for (int i=0; i<jsonArray.length(); i++)
{
JSONObject obj = jsonArray.getJSONObject(i);
Articulos articulos = new Articulos(obj);
data = articulos.JsonObjectsBuild(jsonArray);
}
AdapterArticulos adapterArticulos = new AdapterArticulos(this, data);
listView.setAdapter(adapterArticulos);
listView.setOnItemClickListener(this);
}

13
Articulos Activity

@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
articlee = data.get(position).getTitulo();
String url = data.get(position).getUrlPdf();
imageView = (ImageView)view.findViewById(R.id.imgPDF);
imageView.setTag(data.get(position).getUrlPdf());
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isDownloadManagerAvailable())
{
String url = data.get(position).getUrlPdf();
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription("PDF Paper");
request.setTitle(articlee);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, url);

DownloadManager manager = (DownloadManager)getApplicationContext().getSystemService(Context.DOWNLOAD_SERVICE);


try {
manager.enqueue(request);

} catch (Exception e) {

Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();


}
}
}
});
}
14

You might also like