- activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout 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">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rView"
android:layout_width="409dp"
android:layout_height="729dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
2.activity_frame.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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="500dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="411dp"
android:layout_height="360dp"
android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars"
android:contentDescription="@string/todo" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/textview1"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
app:layout_constraintVertical_bias="0.173" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/textview2"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/textView1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
- HDNews.java
package com.example.android.hdnews;
public class HDNews {
private String title;
private String author;
private String image;
public HDNews(String title, String author, String image) {
this.title = title;
this.author = author;
this.image = image;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public String getImage() {
return image;
}
}
MainActivity.java
package com.example.android.hdnews;
import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle; import android.widget.LinearLayout;
import com.android.volley.NetworkResponse; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley;
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ArrayList al;
private HDNewsAdapter hdNewsAdapter;
private RequestQueue requestQueue;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView=findViewById(R.id.rView); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); al=new ArrayList<HDNews>(); requestQueue= Volley.newRequestQueue(this); extractingDataFromInternet(); } //http://newsapi.org/v2/top-headlines?country=in&apiKey=94bf8bcc374b494485309e325e3656f9 public void extractingDataFromInternet(){ String url="http://newsapi.org/v2/top-headlines?country=in&category=business&apiKey=94bf8bcc374b494485309e325e3656f9"; JsonObjectRequest JsonObjReq=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { JSONArray jsonArray = response.getJSONArray("articles"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject ca = jsonArray.getJSONObject(i); String authorNames = ca.optString("author"); String titleNames = ca.optString("title"); String imageUrls = ca.getString("urlToImage"); al.add(new HDNews(titleNames, authorNames, imageUrls)); } hdNewsAdapter = new HDNewsAdapter(MainActivity.this, al); recyclerView.setAdapter(hdNewsAdapter); } catch ( JSONException e ) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); requestQueue.add(JsonObjReq); }
}
HDNewsAdapter
package com.example.android.hdnews;
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
public class HDNewsAdapter extends RecyclerView.Adapter<HDNewsAdapter.ViewHolder>{
private Context context; private ArrayList<HDNews> al; public HDNewsAdapter(Context context, ArrayList<HDNews> al) { this.context = context; this.al = al; } @NonNull @Override public HDNewsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View views= LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_frame,parent,false); return new ViewHolder(views); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { HDNews currentposition=al.get(position); String imgurl=currentposition.getImage(); String athName=currentposition.getAuthor(); String ttleName=currentposition.getTitle(); holder.titleName01.setText(ttleName); holder.authorName01.setText(athName); Glide.with(context).load(imgurl).into(holder.imageurl01); } @Override public int getItemCount() { return al.size(); } public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public TextView authorName01; public TextView titleName01; public ImageView imageurl01; public ViewHolder(@NonNull View itemView) { super(itemView); authorName01=itemView.findViewById(R.id.textView1); titleName01=itemView.findViewById(R.id.textView2); imageurl01=itemView.findViewById(R.id.imageView); } @Override public void onClick(View view) { } }
}