Reputation: 138
I'm new to android app programming. I have a webview that shows the post content, but I am only getting text and images, please tell me how to change loadData
to loadUrl
My classes :
1. MainActivity.java
package com.a000webhostapp.androidgrid.androidgridapp;
import android.animation.Animator;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.DownloadListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity{
Button layout;
RelativeLayout fragmentContent, homeContent;
final static String urlAddress = "https://androidgrid.000webhostapp.com/index.php/feed/";
String url = "http://androidgrid.000webhostapp.com/wp-json/wp/v2/posts?filter[posts_per_page]=10&fields=id,title,link";
List<Object> list;
Gson gson;
ProgressDialog progressDialog;
ListView postList;
Map<String,Object> mapPost;
Map<String,Object> mapTitle;
int postID;
String postTitle[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
postList = (ListView)findViewById(R.id.postList);
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
gson = new Gson();
list = (List) gson.fromJson(s, List.class);
postTitle = new String[list.size()];
for(int i=0;i<list.size();++i){
mapPost = (Map<String,Object>)list.get(i);
mapTitle = (Map<String, Object>) mapPost.get("title");
postTitle[i] = (String) mapTitle.get("rendered");
}
postList.setAdapter(new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,postTitle));
progressDialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this, "Some error occurred", Toast.LENGTH_LONG).show();
}
});
RequestQueue rQueue = Volley.newRequestQueue(MainActivity.this);
rQueue.add(request);
postList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mapPost = (Map<String,Object>)list.get(position);
postID = ((Double)mapPost.get("id")).intValue();
Intent intent = new Intent(getApplicationContext(),Post.class);
intent.putExtra("id", ""+postID);
startActivity(intent);
}
});
}
}
2. Post.java
package com.a000webhostapp.androidgrid.androidgridapp;
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.TextView;
import android.widget.Toast;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import java.util.Map;
public class Post extends AppCompatActivity {
TextView title;
WebView content;
ProgressDialog progressDialog;
Gson gson;
Map<String, Object> mapPost;
Map<String, Object> mapTitle;
Map<String, Object> mapContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.post);
final String id = getIntent().getExtras().getString("id");
title = (TextView) findViewById(R.id.title);
content = (WebView)findViewById(R.id.content);
progressDialog = new ProgressDialog(Post.this);
progressDialog.setMessage("Loading...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
String url = "http://androidgrid.000webhostapp.com/wp-json/wp/v2/posts/"+id+"?fields=title,content";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
gson = new Gson();
mapPost = (Map<String, Object>) gson.fromJson(s, Map.class);
mapTitle = (Map<String, Object>) mapPost.get("title");
mapContent = (Map<String, Object>) mapPost.get("content");
title.setText(mapTitle.get("rendered").toString());
content.loadData(mapContent.get("rendered").toString(),"text/html","UTF-8");
progressDialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
progressDialog.dismiss();
Toast.makeText(Post.this, id, Toast.LENGTH_LONG).show();
}
});
RequestQueue rQueue = Volley.newRequestQueue(Post.this);
rQueue.add(request);
}
}
Upvotes: 2
Views: 1279
Reputation: 6389
Your filtered the result. You can use this URL to get full post:
http://yourwebsite.com/wp-json/wp/v2/posts/
You can also get by categories:
http://yourwebsite.com/wp-json/wp/v2/posts/?categories=1
As you see you had to pass category id and all categories can get by:
http://yourwebsite.com/wp-json/wp/v2/categories/
You can also get paged result by:
http://yourwebsite.com/wp-json/wp/v2/posts/?categories=1&page=2
If you wan to get post images, check this question and if you want to implement OAuth for better security for your apis check this out. I hope this helps.
Upvotes: 1