I'm trying to make a clone of Instagram as a project. I get the images in my feed but not the videos.Please suggest some ways I can parse JSON object and make the video views to include the videos in my feed.I don't want to play the video in the app but provide the option of allowing the user to download the video.
private void parseJsonFeed(JSONObject response) {
try {
JSONObject nexturlobj = (JSONObject) response.get("pagination");
nxturl=nexturlobj.getString("next_url");
JSONArray feedArray = response.getJSONArray("data");
for (int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);
String VideoType = feedObj.getString("type");
String ImageType = feedObj.getString("type");
if (ImageType.equalsIgnoreCase("image"))
{
JSONObject feedObj2 = (JSONObject) feedObj.get("images");
JSONObject feedObj3 = (JSONObject) feedObj2.get("standard_resolution");
JSONObject feedObj1 = (JSONObject) feedObj.get("user");
FeedItem item = new FeedItem();
item.setId(feedObj1.getInt("id"));
item.setName(feedObj1.getString("username"));
//item.setStatus(feedObj.getString("tags"));
JSONArray tagss = feedObj.getJSONArray("tags");
StringBuilder tags_names = new StringBuilder("");
for (int k = 0; k < tagss.length(); k++) {
tags_names.append(" #"
+ tagss.getString(k));
}
item.setStatus(""+tags_names);
// // Image might be null sometimes
//String image = feedObj3.isNull("image") ? null : feedObj3
//.getString("url");
item.setImge(feedObj3.getString("url"));
item.setProfilePic(feedObj1.getString("profile_picture"));
feedItems.add(item);
//Toast.makeText(getActivity(), "new url==fed"+ feedItems.size(), 1).show();
// StringBuilder sb=new StringBuilder();
// sb.append("#");
// for(int I =0; I<feedItems.size(); I++) {
// sb.append("#");
// }
//return ;
item.myurl=new ArrayList<FeedItem>();
}else if (VideoType.equalsIgnoreCase("image"))
{
JSONObject feedObj2 = (JSONObject) feedObj.get("images");
JSONObject feedObj3 = (JSONObject) feedObj2.get("standard_resolution");
JSONObject feedObj1 = (JSONObject) feedObj.get("user");
FeedItem item = new FeedItem();
item.setId(feedObj1.getInt("id"));
item.setName(feedObj1.getString("username"));
//item.setStatus(feedObj.getString("tags"));
JSONArray tagss = feedObj.getJSONArray("tags");
StringBuilder tags_names = new StringBuilder("");
for (int k = 0; k < tagss.length(); k++) {
tags_names.append(" #"
+ tagss.getString(k));
}
item.setStatus(""+tags_names);
// // Image might be null sometimes
//String image = feedObj3.isNull("image") ? null : feedObj3
//.getString("url");
item.setImge(feedObj3.getString("url"));
item.setProfilePic(feedObj1.getString("profile_picture"));
feedItems.add(item);
//Toast.makeText(getActivity(), "new url==fed"+ feedItems.size(), 1).show();
// StringBuilder sb=new StringBuilder();
// sb.append("#");
// for(int I =0; I<feedItems.size(); I++) {
// sb.append("#");
// }
//return ;
item.myurl=new ArrayList<FeedItem>();
}
}
// notify data changes to list adapater
listAdapter.notifyDataSetChanged();
tag_list_pos++;
} catch (JSONException e) {
e.printStackTrace();
}
}
class FeedListAdapter extends BaseAdapter {
FeedItem item;
String URL_FEED = "";
private Activity activity;
private LayoutInflater inflater;
private List<FeedItem> feedItems;
// String video;
// VideoView mVideoView;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
FeedList Adapter
public FeedListAdapter(Activity activity, List<FeedItem> feedItems) {
this.activity = activity;
this.feedItems = feedItems;
}
@Override
public int getCount() {
return feedItems.size();
}
@Override
public Object getItem(int location) {
return feedItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.feed_item, null);
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
TextView name = (TextView) convertView.findViewById(R.id.name);
TextView statusMsg = (TextView) convertView
.findViewById(R.id.txtStatusMsg);
NetworkImageView profilePic = (NetworkImageView) convertView
.findViewById(R.id.profilePic);
FeedImageView feedImageView = (FeedImageView) convertView
.findViewById(R.id.feedImage1);
Button btn = (Button) convertView.findViewById(R.id.downloadbtn);//this is used to dpwnload images
item = feedItems.get(position);
name.setText("" + item.getName());
if (!TextUtils.isEmpty(item.getStatus())) {
statusMsg.setText(item.getStatus().trim());
statusMsg.setVisibility(View.VISIBLE);
} else {
// status is empty, remove from view
statusMsg.setVisibility(View.GONE);
}
// user profile pic
if (item.getProfilePic() != null)
profilePic.setImageUrl(item.getProfilePic(), imageLoader);
// Feed image
if (item.getImge() != null) {
feedImageView.setImageUrl(item.getImge(), imageLoader);
feedImageView.setVisibility(View.VISIBLE);
feedImageView.setResponseObserver(new FeedImageView.ResponseObserver() {
@Override
public void onError() {
}
@Override
public void onSuccess() {
}
});
} else {
feedImageView.setVisibility(View.GONE);
}
if (position == (feedItems.size() - 1)) {
// URL_FEED = "https://api.instagram.com/v1/tags/"
// + feedItems.get(tag_list_pos)
// + "/media/recent?access_token="+accestok;
//URL_FEED = "https://api.instagram.com/v1/media/popular?access_token="+accestok;
URL_FEED = nxturl.toString();
//Toast.makeText(getActivity(), "myurl=="+URL_FEED, 1).show();
//Toast.makeText(getActivity(), "new url==fed"+ URL_FEED, 1).show();
// new LoadMoreAsynTask(tagPos).execute();
listview_loadMoredata(URL_FEED);
}
btn.setTag(position);
btn.setOnClickListener(new OnClickListener() {
//
@Override
public void onClick(View v) {
pos = (Integer) v.getTag();
cd = new ConnectionDetector(getActivity());
isInternetpresent = cd.isConnectingToInternet();
if (isInternetpresent) {
videoURL = feedItems.get(pos).getImge();//this is image url
username = feedItems.get(pos).getName();
//Toast.makeText(getActivity(), "hello==="+ videoURL, 1).show();
DownloadAsyTask downlod_video = new DownloadAsyTask();
downlod_video.execute();
} else {
alert.showAlertDialog(getActivity(), "Connection Error",
"Please check your internet connection.", false);
}
}
});
return convertView;
}
private void listview_loadMoredata(String url_feed) {
}
}
public void listview_loadMoredata(String URL_FEED) {
Cache cache = AppController.getInstance().getRequestQueue().getCache();
Entry entry = cache.get(URL_FEED);
if (entry != null) {
// fetch the data from cache
try {
String data = new String(entry.data, "UTF-8");
try {
parseJsonFeedLoadMore(new JSONObject(data));
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
// making fresh volley request and getting json
JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,
URL_FEED, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
VolleyLog.d("", "Response: " + response.toString());
if (response != null) {
parseJsonFeed(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("", "Error: " + error.getMessage());
}
});
// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(jsonReq);
}
}
private void parseJsonFeedLoadMore(JSONObject response) {
try {
JSONArray feedArray = response.getJSONArray("data");
for (int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);
String videoType = feedObj.getString("type");
if (videoType.equalsIgnoreCase("image")) {
JSONObject videoObj = (JSONObject) feedObj.get("videos");
JSONObject videoQlty = (JSONObject) videoObj.get("low_bandwidth");
JSONObject feedObj2 = (JSONObject) feedObj.get("images");
JSONObject feedObj3 = (JSONObject) feedObj2
.get("standard_resolution");// standard_resolution
// thumbnail
JSONObject feedObj1 = (JSONObject) feedObj.get("user");
FeedItem item = new FeedItem();
item.setId(feedObj1.getInt("id"));
item.setName("" + feedObj1.getString("username"));
JSONArray tagss = feedObj.getJSONArray("tags");
StringBuilder tags_names = new StringBuilder("");
for (int k = 0; k < tagss.length(); k++) {
tags_names.append(" #"
+ tagss.getString(k));
}
item.setStatus("" + tags_names);
// // Image might be null sometimes
// String image = feedObj3.isNull("image") ? null : feedObj3
// .getString("url");
item.setImge("" + feedObj3.getString("url"));
//item.setVideo(""+videoQlty.getString("url"));//------------
item.setProfilePic("" + feedObj1.getString("profile_picture"));
feedItems.add(item);
item.myurl.add(item);
}
}
// notify data changes to list adapater
listAdapter.notifyDataSetChanged();//----------------
tag_list_pos++;
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}