Friday 18 November 2016

Retrofit File Upload:

Config class:

public class RetroConfig {

    public static Retrofit retrofit(){

        OkHttpClient client = new OkHttpClient();
        client.retryOnConnectionFailure();
        client.cache();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://bestvote.in/privilege/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        return retrofit;
    }
}

Create Api Interface:

import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

import org.json.JSONObject;

import okhttp3.ResponseBody;
import retrofit.Call;
import retrofit.http.Field;
import retrofit.http.FormUrlEncoded;
import retrofit.http.GET;
import retrofit.http.Multipart;
import retrofit.http.POST;
import retrofit.http.Part;
import retrofit.http.Path;
import retrofit.http.Query;
public interface ApiInterface {

    @Multipart
    @POST("insertpost.php")
    Call<CommonResponse> submitForm(@Part("description") RequestBody desc, @Part("audio\"; filename=\".mp3\" ") RequestBody audio,
                              @Part("image\"; filename=\".jpg\" ") RequestBody photo,
                              @Part("late") RequestBody lat, @Part("long") RequestBody lon);

    @GET("allpost.php")
    Call<SellerResponse> getSellerAds();
}

Call Api Post method:

import retrofit.Call;
import retrofit.Callback;
import retrofit.Retrofit;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

private void submitForm() {
        String desc = details.getText().toString();

        if (!desc.equals("") && imagePath!=null && audioPath!=null) {
            RequestBody descBody = RequestBody.create(MediaType.parse("text/plain"), desc);
            RequestBody latBody = RequestBody.create(MediaType.parse("text/plain"), latFinal);
            RequestBody lonBody = RequestBody.create(MediaType.parse("text/plain"), lngFinal);
            RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(imagePath));
            RequestBody audioBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(audioPath));
            //RequestBody videoBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(videoPath));

            final ProgressDialog dialog = new ProgressDialog(SellerActivity.this);
            dialog.setMessage("Uploading...");
            dialog.setCancelable(false);
            dialog.show();

            Call<CommonResponse> call = RetroConfig.client().submitForm(descBody, audioBody, imageBody, latBody, lonBody);
            call.enqueue(new Callback<CommonResponse>() {
                @Override
                public void onResponse(retrofit.Response<CommonResponse> response, Retrofit retrofit) {
                    dialog.cancel();
                    if (response.body() != null) {
                        CommonResponse response1 = response.body();
                        if(response1.getResponse().equals("success")){
                            Toast.makeText(SellerActivity.this, "Upload Ads successfully..", Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(SellerActivity.this, SellerAds.class));
                            finish();
                        }
                    }
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e("submitError", t.getLocalizedMessage());
                    dialog.cancel();
                }
            });
        } else {
            Utils.showDialog(SellerActivity.this, "Please select All files");
        }
    }   

CallGet Method:

RetroConfig.client().getSellerAds().enqueue(new Callback<SellerResponse>() {
            @Override
            public void onResponse(Response<SellerResponse> response, Retrofit retrofit) {
                SellerResponse sr = response.body();
                String status = sr.getResponse();
                if(status.equals("success")){
                    List<SAds> sAdses = sr.getSellerAds();
                    rv.setAdapter(new SellerAdsAdapter(SellerAds.this, sAdses));
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Log.e("error", t.getLocalizedMessage());
            }
        });

Thursday 10 November 2016


Dynamic ViewPager:-

in Activity :


public class MainActivity extends AppCompatActivity {

    ViewPager mPager;

    int numPages = 0;

    String[] mImageArray;

    int addNext = 0;
    EndLessAdapter adapter;

    ArrayList<String> arrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        arrayList = new ArrayList<>();

        String number = getIntent().getStringExtra("number");
        numPages = Integer.parseInt(number);

        mImageArray = new String[numPages];

        addNext = numPages;

        for (int i = 0; i < numPages; i++) {
            mImageArray[i] = "Click " + String.valueOf(i + 1);
            arrayList.add("Click " + String.valueOf(i + 1));
        }

        mPager = (ViewPager) findViewById(R.id.frame);
        mPager.setOffscreenPageLimit(0);
        adapter = new EndLessAdapter(this, arrayList);
        mPager.setAdapter(adapter);
    }

    public void addNewpage() {
        arrayList.add("Click " + String.valueOf(addNext + 1));
        adapter.notifyDataSetChanged();
        addNext = addNext + 1;
    }

    public class EndLessAdapter extends PagerAdapter {

        FragmentActivity activity;
        ArrayList<String> stringArrayList1;
        // String imageArray[];
        private int pos = 0;

        public EndLessAdapter(FragmentActivity act, ArrayList<String> stringArrayList) {
            stringArrayList1 = stringArrayList;
            activity = act;
        }

        public int getCount() {
            return Integer.MAX_VALUE;
            //return imageArray.length;
        }

        public Object instantiateItem(View collection, int position) {

            Button mwebView = new Button(activity);
            ((ViewPager) collection).addView(mwebView, 0);
            // mwebView.setScaleType(ImageView.ScaleType.FIT_XY);
            mwebView.setText(stringArrayList1.get(pos));

            mwebView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    addNewpage();
                }
            });

            if (pos >= stringArrayList1.size() - 1)
                pos = 0;
            else
                ++pos;

            return mwebView;
        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

    }
}

in XML file:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.com.dynamicviewpager_android.MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" >
    </android.support.v4.view.ViewPager>
</RelativeLayout>

BackStack in Fragments:-

Create Interface class:

public interface OnBackListner {
    void back();
}

In Activity:

public class HomeActivity extends AppCompatActivity{

    OnBackListner onBackListner;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigationdrawer);
    }

    @Override
    public void onBackPressed() {
            if (onBackListner != null) {
                onBackListner.back();
            } else {
                finish();
            }       
    }

    public void setOnBackPressedListener(OnBackListner onBackPressedListener) {
        this.onBackListner = onBackPressedListener;
    }

}

In 1st Fragment :

((HomeActivity) getActivity()).setOnBackPressedListener(new OnBackListner() {
            @Override
            public void back() {
                //startActivity(new Intent(getActivity(), MainActivity.class));
                CommonUtils.hideKeyboard(getActivity());
                getActivity().finish();
            }

        });

2nd Fragment:

((HomeActivity) getActivity()).setOnBackPressedListener(new OnBackListner() {
            @Override
            public void back() {
                //startActivity(new Intent(getActivity(), MainActivity.class));
                CommonUtils.hideKeyboard(getActivity());
                getActivity().getSupportFragmentManager().popBackStackImmediate();
            }

        });

Fragment Transaction:-

Simple Fragment Transaction:

Fragment 1:

Fragment fragment = new EditProfileFragment();

Bundle bundle = new Bundle();
bundle.putString("myrideRideId", "1035");

fragment.setArguments(bundle);

getActivity().getSupportFragmentManager()
                        .beginTransaction()
                        .setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, 
                         R.anim.enter_from_left,  R.anim.exit_to_right)
                        .replace(R.id.frame_container, fragment)
                        .addToBackStack(null)
                        .commit();

Fragment 2:

getActivity().getSupportFragmentManager().popBackStackImmediate();

Simple Fragment Add:

getSupportFragmentManager()
                    .beginTransaction()
                    .add(R.id.frame_container, fragment)
                    .commit();