mitchtabian / android-instagram-clone Goto Github PK
View Code? Open in Web Editor NEWDevelop your own Instagram Clone App
Home Page: https://codingwithmitch.com/courses/instagram-clone/
Develop your own Instagram Clone App
Home Page: https://codingwithmitch.com/courses/instagram-clone/
The method getDownloadUrl() in Class FirebaseMethods at file Utils/ is deprecated. All what I spy out is to put the url object into a Task:
https://stackoverflow.com/questions/50554548/error-cannot-find-symbol-method-getdownloadurl-of-type-com-google-firebase-st
Anybody able to help?
Provide us the firebase data structure
Can't pass null for argument 'pathString' in child()
i've been following your tutorial and i got this error on my firebasemethod.java
any idea? thanks
I am not able to create a story. It's showing the photo upload failed.
I want to Add story exactly like Instagram but it's not like Instagram Stories.
3 module is missing. build and gradle and .iml file. i can't open the project.
** i have few bugs over my app..My app crashed after accessing a directory without pictures and I followed your instruction by calling the try{} and catch method but yet it glitches and the picture uploading rate is very slow,it takes so much time before successful uploading and sometimes it crashed
It doesn't display more the three pictures in the profile_fragment gridview and will only display of the photos from my firebase storage**
when i want to sync the project this error happens:
Failed to resolve: com.google.android.exoplayer:exoplayer-core:2.6.0
Install Repository and sync project
Show in File
Show in Project Structure dialog
Failed to resolve: com.google.android.exoplayer:exoplayer-dash:2.6.0
Install Repository and sync project
Show in File
Show in Project Structure dialog
and when i click on Install Repository and sync project this error happens:
Could not find dependency "com.google.android.exoplayer:exoplayer-core:2.6.0
what should i do to solve this?Thanks
Hi,When i try to register new user i am getting error toast like "Failed to Authenticate". So that i couldnt use the App.Please help me
In Class SectionsStatePagerAdapter the function used named getFragmentNumber where you have used mfragmentNumber.containskey instead of mfragments.containskey needs to be changed......as the key is Fragments not Integer..
Authentication always fail..
Tested on 6.0, you can only choose photos from internal memory, you cant choose from external. How can i fix it??
can you give a account which can login success?
Hi Mitch,
Can you please share the structure of the database as json file ? The same one that you used in videos would be enough.
I tried creating new database file by watching your videos but its is not working perfectly...
failed to authenticate on registration.
Does anyone have the full and final Firebase JSON data structure for this?
package com.example.menny.travelapp;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.StringBuilderPrinter;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.menny.travelapp.models.Comment;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.example.menny.travelapp.models.Like;
import com.example.menny.travelapp.models.Photo;
import com.example.menny.travelapp.models.User;
import com.example.menny.travelapp.models.UserAccountSetting;
import com.example.menny.travelapp.utils.FirebaseMethods;
import com.example.menny.travelapp.utils.GridImageAdapter;
import com.example.menny.travelapp.utils.Heart;
import com.example.menny.travelapp.utils.SquareImageVew;
import com.example.menny.travelapp.utils.UniversalImageLoader;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
public class ViewPostFragment extends Fragment {
private static final String TAG = "ViewPostFragment";
public interface OnCommentThreadSelectedListener{
void onCommentThreadSelectedListener(Photo photo);
}
OnCommentThreadSelectedListener mOnCommentThreadSelectedListener;
public ViewPostFragment(){
super();
setArguments(new Bundle());
}
//firebase
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference myRef;
private FirebaseMethods mFirebaseMethods;
//widgets
private SquareImageVew mPostImage;
private BottomNavigationViewEx bottomNavigationView;
private TextView mBackLabel, mCaption, mUsername, mTimestamp, mLikes, mComments;
private ImageView mBackArrow, mEllipses, mHeartRed, mHeartWhite, mProfileImage, mComment;
//vars
private Photo mPhoto;
private int mActivityNumber = 0;
private String photoUsername = "";
private String profilePhotoUrl = "";
private UserAccountSetting mUserAccountSettings;
private GestureDetector mGestureDetector;
private Heart mHeart;
private Boolean mLikedByCurrentUser;
private StringBuilder mUsers;
private String mLikesString = "";
private User mCurrentUser;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view_post, container, false);
mPostImage = (SquareImageVew) view.findViewById(R.id.post_image);
bottomNavigationView = (BottomNavigationViewEx) view.findViewById(R.id.bottomNavViewBar);
mBackArrow = (ImageView) view.findViewById(R.id.comment_backarrow);
mBackLabel = (TextView) view.findViewById(R.id.tvBackLabel);
mCaption = (TextView) view.findViewById(R.id.image_caption);
mUsername = (TextView) view.findViewById(R.id.username);
mTimestamp = (TextView) view.findViewById(R.id.image_date);
mEllipses = (ImageView) view.findViewById(R.id.Ellipses);
mHeartRed = (ImageView) view.findViewById(R.id.image_heart_red);
mHeartWhite = (ImageView) view.findViewById(R.id.image_heart);
mProfileImage = (ImageView) view.findViewById(R.id.profilephoto);
mLikes = (TextView) view.findViewById(R.id.image_likes);
mComment = (ImageView) view.findViewById(R.id.speech_bubble);
mComments = (TextView) view.findViewById(R.id.image_comeents_link);
mHeart = new Heart(mHeartWhite, mHeartRed);
mGestureDetector = new GestureDetector(getActivity(), new GestureListener());
setupFirebaseAuth();
return view;
}
private void init(){
try{
//mPhoto = getPhotoFromBundle();
UniversalImageLoader.setImage(getPhotoFromBundle().getImage_path(), mPostImage, null, "");
mActivityNumber = getActivityNumFromBundle();
String photo_id = getPhotoFromBundle().getPhoto_id();
Query query = FirebaseDatabase.getInstance().getReference()
.child(getString(R.string.dbname_photos))
.orderByChild(getString(R.string.field_photo_id))
.equalTo(photo_id);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for ( DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Photo newPhoto = new Photo();
Map<String, Object> objectMap = (HashMap<String, Object>) singleSnapshot.getValue();
newPhoto.setCaption(objectMap.get(getString(R.string.field_caption)).toString());
newPhoto.setTags(objectMap.get(getString(R.string.field_tags)).toString());
newPhoto.setPhoto_id(objectMap.get(getString(R.string.field_photo_id)).toString());
newPhoto.setUser_id(objectMap.get(getString(R.string.field_user_id)).toString());
newPhoto.setDate_created(objectMap.get(getString(R.string.field_date_created)).toString());
newPhoto.setImage_path(objectMap.get(getString(R.string.field_image_path)).toString());
List<Comment> commentsList = new ArrayList<Comment>();
for (DataSnapshot dSnapshot : singleSnapshot
.child(getString(R.string.field_comments)).getChildren()){
Comment comment = new Comment();
comment.setUser_id(dSnapshot.getValue(Comment.class).getUser_id());
comment.setComment(dSnapshot.getValue(Comment.class).getComment());
comment.setDate_created(dSnapshot.getValue(Comment.class).getDate_created());
commentsList.add(comment);
}
newPhoto.setComments(commentsList);
mPhoto = newPhoto;
getCurrentUser();
getPhotoDetails();
//getLikesString();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "onCancelled: query cancelled.");
}
});
}catch (NullPointerException e){
Log.e(TAG, "onCreateView: NullPointerException: " + e.getMessage() );
}
}
@Override
public void onResume() {
super.onResume();
if(isAdded()){
init();
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try{
mOnCommentThreadSelectedListener = (OnCommentThreadSelectedListener) getActivity();
}catch (ClassCastException e){
Log.e(TAG, "onAttach: ClassCastException: " + e.getMessage() );
}
}
private void getLikesString(){
Log.d(TAG, "getLikesString: getting likes string");
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_photos))
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes));
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mUsers = new StringBuilder();
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_users))
.orderByChild(getString(R.string.field_user_id))
.equalTo(singleSnapshot.getValue(Like.class).getUser_id());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d(TAG, "onDataChange: found like: " +
singleSnapshot.getValue(User.class).getUsername());
mUsers.append(singleSnapshot.getValue(User.class).getUsername());
mUsers.append(",");
}
String[] splitUsers = mUsers.toString().split(",");
if(mUsers.toString().contains(mCurrentUser.getUsername() + ",")){//mitch, mitchell.tabian
mLikedByCurrentUser = true;
}else{
mLikedByCurrentUser = false;
}
int length = splitUsers.length;
if(length == 1){
mLikesString = "Liked by " + splitUsers[0];
}
else if(length == 2){
mLikesString = "Liked by " + splitUsers[0]
+ " and " + splitUsers[1];
}
else if(length == 3){
mLikesString = "Liked by " + splitUsers[0]
+ ", " + splitUsers[1]
+ " and " + splitUsers[2];
}
else if(length == 4){
mLikesString = "Liked by " + splitUsers[0]
+ ", " + splitUsers[1]
+ ", " + splitUsers[2]
+ " and " + splitUsers[3];
}
else if(length > 4){
mLikesString = "Liked by " + splitUsers[0]
+ ", " + splitUsers[1]
+ ", " + splitUsers[2]
+ " and " + (splitUsers.length - 3) + " others";
}
Log.d(TAG, "onDataChange: likes string: " + mLikesString);
setupWidgets();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
if(!dataSnapshot.exists()){
mLikesString = "";
mLikedByCurrentUser = false;
setupWidgets();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void getCurrentUser(){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_users))
.orderByChild(getString(R.string.field_user_id))
.equalTo(FirebaseAuth.getInstance().getCurrentUser().getUid());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for ( DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
mCurrentUser = singleSnapshot.getValue(User.class);
}
getLikesString();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "onCancelled: query cancelled.");
}
});
}
public class GestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d(TAG, "onDoubleTap: double tap detected.");
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_photos))
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes));
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
String keyID = singleSnapshot.getKey();
//case1: Then user already liked the photo
if(mLikedByCurrentUser &&
singleSnapshot.getValue(Like.class).getUser_id()
.equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){
myRef.child(getString(R.string.dbname_photos))
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes))
.child(keyID)
.removeValue();
myRef.child(getString(R.string.dbname_user_photos))
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes))
.child(keyID)
.removeValue();
mHeart.toggleLike();
getLikesString();
}
//case2: The user has not liked the photo
else if(!mLikedByCurrentUser){
//add new like
addNewLike();
break;
}
}
if(!dataSnapshot.exists()){
//add new like
addNewLike();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return true;
}
}
private void addNewLike(){
Log.d(TAG, "addNewLike: adding new like");
String newLikeID = myRef.push().getKey();
Like like = new Like();
like.setUser_id(FirebaseAuth.getInstance().getCurrentUser().getUid());
myRef.child(getString(R.string.dbname_photos))
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes))
.child(newLikeID)
.setValue(like);
myRef.child(getString(R.string.dbname_user_photos))
.child(mPhoto.getUser_id())
.child(mPhoto.getPhoto_id())
.child(getString(R.string.field_likes))
.child(newLikeID)
.setValue(like);
mHeart.toggleLike();
getLikesString();
}
private void getPhotoDetails(){
Log.d(TAG, "getPhotoDetails: retrieving photo details.");
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_users_account_setting))
.orderByChild(getString(R.string.field_user_id))
.equalTo(mPhoto.getUser_id());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for ( DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
mUserAccountSettings = singleSnapshot.getValue(UserAccountSetting.class);
}
//setupWidgets();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "onCancelled: query cancelled.");
}
});
}
private void setupWidgets(){
String timestampDiff = getTimestampDifference();
if(!timestampDiff.equals("0")){
mTimestamp.setText(timestampDiff + " DAYS AGO");
}else{
mTimestamp.setText("TODAY");
}
UniversalImageLoader.setImage(mUserAccountSettings.getProfile_photo(), mProfileImage, null, "");
mUsername.setText(mUserAccountSettings.getUsername());
mLikes.setText(mLikesString);
mCaption.setText(mPhoto.getCaption());
if(mPhoto.getComments().size() > 0){
mComments.setText("View all " + mPhoto.getComments().size() + " comments");
}else{
mComments.setText("");
}
mComments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: navigating to comments thread");
mOnCommentThreadSelectedListener.onCommentThreadSelectedListener(mPhoto);
}
});
mBackArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: navigating back");
getActivity().getSupportFragmentManager().popBackStack();
}
});
mComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: navigating back");
mOnCommentThreadSelectedListener.onCommentThreadSelectedListener(mPhoto);
}
});
if(mLikedByCurrentUser){
mHeartWhite.setVisibility(View.GONE);
mHeartRed.setVisibility(View.VISIBLE);
mHeartRed.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "onTouch: red heart touch detected.");
return mGestureDetector.onTouchEvent(event);
}
});
}
else{
mHeartWhite.setVisibility(View.VISIBLE);
mHeartRed.setVisibility(View.GONE);
mHeartWhite.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "onTouch: white heart touch detected.");
return mGestureDetector.onTouchEvent(event);
}
});
}
}
/**
* Returns a string representing the number of days ago the post was made
* @return
*/
private String getTimestampDifference(){
Log.d(TAG, "getTimestampDifference: getting timestamp difference.");
String difference = "";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.CANADA);
sdf.setTimeZone(TimeZone.getTimeZone("Canada/Pacific"));//google 'android list of timezones'
Date today = c.getTime();
sdf.format(today);
Date timestamp;
final String photoTimestamp = mPhoto.getDate_created();
try{
timestamp = sdf.parse(photoTimestamp);
difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24 )));
}catch (ParseException e){
Log.e(TAG, "getTimestampDifference: ParseException: " + e.getMessage() );
difference = "0";
}
return difference;
}
/**
* retrieve the activity number from the incoming bundle from profileActivity interface
* @return
*/
private int getActivityNumFromBundle(){
Log.d(TAG, "getActivityNumFromBundle: arguments: " + getArguments());
Bundle bundle = this.getArguments();
if(bundle != null) {
return bundle.getInt(getString(R.string.activity_number));
}else{
return 0;
}
}
/**
* retrieve the photo from the incoming bundle from profileActivity interface
* @return
*/
private Photo getPhotoFromBundle(){
Log.d(TAG, "getPhotoFromBundle: arguments: " + getArguments());
Bundle bundle = this.getArguments();
if(bundle != null) {
return bundle.getParcelable(getString(R.string.photo));
}else{
return null;
}
}
/*
------------------------------------ Firebase ---------------------------------------------
*/
/**
* Setup the firebase auth object
*/
private void setupFirebaseAuth(){
Log.d(TAG, "setupFirebaseAuth: setting up firebase auth.");
mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
}
hello sir mainfeed photo are not getting uploaded.if we upload the photo its only updating the profile photo instead of mainfeed
A lot of bug in your project picture post from gallery doesnt go to feed fragements but only change profil pictures , story doesnbt work cant research others peoples
not able to signup... its saying Failed to Authenticate
can't open camera or gallery . can't post anything you can not change profile pic .
only you will get buttons showing on top and bottom .
Error:(22, 39) error: package R does not exist
Error:(10, 33) error: cannot find symbol class R
Because of instagramclone package. Should I remove that?
I dunno how to thank you enough. God bless you. But i have a question, in ur checkIfUsername exists in RegisterActivity you added append, so since 3days ago I've been trying to modify it to just simply tell the user the username exists and choose another without APPENDING ??Mitch pls is that possible?? Thank you
this is totally unique and weird bug I found in the mainfeed
this happens when u like/unlike an odd post, all odd posts get liked/unliked. Same happens with the even posts as well. I don't even know how its possible, I mean the line getItem(position) should limit it to a single post but somehow it occurs. Pls help I can't wrap my head around it.
Failed to Authenticate
There is an issues that the class name is mismatch with the file name for class MainFeedListAdapter
. So it will cause compiling error:
error: class MainFeedListAdapter is public, should be declared in a file named MainFeedListAdapter.java
Can I submit a pull request to fix it?
Is the project contains code for add a stories feature ?
i need to implement drawing feature same like instagram. when i add a stories in android instagram live app the same way feature i need to implement in my app.'
Drawing same like instagram app have
I downloaded the project and tried to run on Android Studio directly, having following error:
import tabian.com.instagramclone.R;
Cannot find symbol R
Please suggest any solution.
I have also created an Instagram-clone but for web!!
Here's the link:
https://github.com/yTakkar/Instagram-clone
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String foodstuff.app.foodstuffpro.models.UserAccountSettings.getProfile_photo()' on a null object reference
at foodstuff.app.foodstuffpro.Utils.ViewPostFragment.setupWidgets(ViewPostFragment.java:190)
at foodstuff.app.foodstuffpro.Utils.ViewPostFragment.access$300(ViewPostFragment.java:49)
at foodstuff.app.foodstuffpro.Utils.ViewPostFragment$3.onDataChange(ViewPostFragment.java:172)
at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
at com.google.android.gms.internal.zzbpx.zza(Unknown Source)
at com.google.android.gms.internal.zzbqx.zzZV(Unknown Source)
at com.google.android.gms.internal.zzbra$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
/************************************************************************************************************/
i keep on getting this error.
we can use Recycler view for snippet_center_editprofile instead of so many Relative Layouts!
The front camera recording is in default mirrored mode but doesn't match with horizontally flipped mode of Instagram or other big apps i.e. SnapChat.
for run this app we need a sample map for create database and field in firebase database and need a map for firestore foldering . thanks
when i try to upload images for posting its always redirected to edit profile activity kindly clear the bug of posting images and videos and update
You can follow this video series to clone instagram step by step: https://blog.developershive.com/simple-instagram-clone-in-10-simple-steps-part-1-free
Hope it helps
Android studio is generating errors in the homeactivity.java
Error:(31, 55) error: cannot find symbol class HomeActivity
Bro, No post are showing up, after saving the edit profile data, app is crashing. Please update your final code.
code error and too many layouts
hello. can i get a copy of your database structure because i there is always an error in running your app.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.