Friday, July 13, 2018

offline display data in android


Dependencies

 

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.squareup.picasso:picasso:2.5.2'
 
 
 
 
 
 
activity.xml 
 
 
 
 
<?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:layout_width="match_parent"   
    android:layout_height="match_parent"   
    android:paddingBottom="@dimen/activity_vertical_margin"   
    android:paddingLeft="@dimen/activity_horizontal_margin"    
    android:paddingRight="@dimen/activity_horizontal_margin"    
    android:paddingTop="@dimen/activity_vertical_margin"    
    tools:context="com.example.kristal.p_retrofit.MainActivity">

    <android.support.v7.widget.RecyclerView       
        android:id="@+id/recycler"        
        android:layout_width="match_parent"        
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>

 
</RelativeLayout>



ManiActivity.java




package com.example.kristal.p_retrofit;

import android.content.Context;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.example.kristal.p_retrofit.Reset.APIClient;
import com.example.kristal.p_retrofit.Reset.APIInterface;
import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;


public class MainActivity extends AppCompatActivity
{
    ArrayList<Displaymodel.Result> app_data;
    RecyclerView rv;
    LinearLayoutManager lm;
    String fname,lname;
    DBExample de;
    Cursor c;
    @Override    
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rv=(RecyclerView)findViewById(R.id.recycler);
       // lv=(ListView)findViewById(R.id.listview);       
        de=new DBExample(this);
        app_data=new ArrayList<>();

        ConnectivityManager connectivity=(ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
        if(connectivity.getActiveNetworkInfo()!=null)
        {
            de.drop();
            display();
           // Toast.makeText(MainActivity.this, "Network Connected",Toast.LENGTH_LONG).show();        }
           else        {
            app_data.clear();
            c=de.displayrecored();
            if(c.moveToFirst())
            {
                do {
                    Displaymodel.Result userdata=new Displaymodel.Result();
                    userdata.setF_nm(c.getString(1));
                    userdata.setL_nm(c.getString(2));
                    app_data.add(userdata);

                }while (c.moveToNext());
            }

            lm=new LinearLayoutManager(getApplicationContext());
            rv.setLayoutManager(lm);
            Customadapter adapter=new Customadapter(MainActivity.this,app_data);
            rv.setAdapter(adapter);
           // Toast.makeText(MainActivity.this, (CharSequence) Mylist,Toast.LENGTH_LONG).show();        }
    }

    public void display()
    {
        APIInterface apiInterface=APIClient.getClient().create(APIInterface.class);
        Call<Displaymodel> call=apiInterface.displayall();
        call.enqueue(new Callback<Displaymodel>()
        {
            @Override            public void onResponse(Call<Displaymodel> call, Response<Displaymodel> response)
            {
                if(response.body().getSuccess().equals("true"))
                {
                     for(int i = 0; i < response.body().result.size(); i++)
                     {
                         Displaymodel.Result userdata = new Displaymodel.Result();
                         //Toast.makeText(MainActivity.this, "Id" + response.body().result.get(i).getId(), Toast.LENGTH_SHORT).show();                         fname=response.body().result.get(i).getF_nm();
                         lname=response.body().result.get(i).getL_nm();

                         userdata.setId(response.body().result.get(i).getId());
                         userdata.setF_nm(response.body().result.get(i).getF_nm());
                         userdata.setL_nm(response.body().result.get(i).getL_nm());
                         userdata.setImage(response.body().result.get(i).getImage());
                         app_data.add(userdata);

                         DBExample de=new DBExample(getApplication());
                         de.insertrecored(fname,lname);
                     }
                }
                lm=new LinearLayoutManager(getApplicationContext());
                rv.setLayoutManager(lm);
                Customadapter adapter=new Customadapter(MainActivity.this,app_data);
                rv.setAdapter(adapter);
            }

            @Override            public void onFailure(Call<Displaymodel> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Error"+t.toString(), Toast.LENGTH_SHORT).show();

            }
        });
    }
}
Customadapter.java




package com.example.kristal.p_retrofit;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;


public class Customadapter extends RecyclerView.Adapter<Customadapter.myviewholder>
{
    ArrayList<Displaymodel.Result>pnm=new ArrayList<>();
    Context context;

    public Customadapter(MainActivity context, ArrayList<Displaymodel.Result> pnm)
    {
        this.context=context;
        this.pnm=pnm;
    }

    @Override   
    public myviewholder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.display,parent,false);
        myviewholder vh=new myviewholder(v);
        return vh;
    }

    @Override   
    public void onBindViewHolder(myviewholder holder, int position)
    {
    
        holder.fnm.setText(pnm.get(position).getF_nm());
        holder.lnm.setText(pnm.get(position).getL_nm());
        Picasso.with(context).load(pnm.get(position).getImage()).into(holder.img);

    }

    @Override    
    public int getItemCount() {

        if(pnm!=null) {
            return pnm.size();
        }
        else        {
            return 0;
        }
    }

    public class myviewholder extends RecyclerView.ViewHolder
    {
        TextView fnm,lnm;
        ImageView img;
        public myviewholder(View itemView)
        {
            super(itemView);
            fnm=(TextView)itemView.findViewById(R.id.textView1);
            lnm=(TextView)itemView.findViewById(R.id.textView2);
            img=(ImageView)itemView.findViewById(R.id.image);

        }
    }
}

                                    Customadapter.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  android:orientation="horizontal" 
  android:layout_width="match_parent"    
  android:layout_height="wrap_content">

    <ImageView
      android:layout_width="170dp"        
      android:layout_height="120dp"        
      android:id="@+id/image"        
      android:layout_marginRight="5dp"        
      android:src="@mipmap/ic_launcher"        
      android:scaleType="fitXY"/>
   <LinearLayout    
       android:layout_width="wrap_content"    
       android:layout_height="wrap_content"    
       android:layout_gravity="center"    
       android:orientation="vertical">
      <TextView        
           android:layout_width="wrap_content"        
           android:layout_height="wrap_content"       
           android:textAppearance="?android:attr/textAppearanceLarge"       
           android:text="Large Text"       
           android:layout_marginBottom="5dp"        
           android:id="@+id/textView1" />

     <TextView        
         android:layout_width="wrap_content"        
         android:layout_height="wrap_content"       
         android:textAppearance="?android:attr/textAppearanceLarge"
         android:text="Large Text"        
         android:id="@+id/textView2" />
</LinearLayout>



</LinearLayout>
 
 
 
 
DBExample.java




package com.example.kristal.p_retrofit;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;


/** * Created by kristal on 6/25/2018. */public class DBExample extends SQLiteOpenHelper
{
    SQLiteDatabase db;
    private Context context;

    public DBExample(Context context)
    {
        super(context, "Person.db", null, 1);
        this.context = context;
    }

    @Override    public void onCreate(SQLiteDatabase db)
    {
        //Toast.makeText(context, "onCreate ", Toast.LENGTH_SHORT).show();        db.execSQL("create table if not exists Demo(id integer PRIMARY KEY AUTOINCREMENT,fnm varchar,lnm varchar);");
    }

    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL("DROP TABLE IF EXISTS Demo");
        onCreate(db);
    }


    public void insertrecored(String fname, String lname)
    {
        db = getWritableDatabase();
        String Query = "insert into Demo(fnm ,lnm)values('" + fname + "','" + lname + "')";
        db.execSQL(Query);
        Toast.makeText(context, "Recored Inserted.....", Toast.LENGTH_SHORT).show();
    }


    public Cursor displayrecored()
    {
        db=getReadableDatabase();
        String query="select * from Demo";
        Cursor c=db.rawQuery(query,null);
        /*if(c.moveToFirst())       
          {            
             do {                
                      Mylist.add(c.getString(1));               
                      Mylist.add(c.getString(2));
            }while (c.moveToNext());        }*/

        return c;
    }
    public void drop()
    {
            db=getWritableDatabase();
            db.execSQL("DROP TABLE IF EXISTS Demo");
            //Toast.makeText(context, "table deleted ", Toast.LENGTH_SHORT).show();            onCreate(db);
    }
}







Displaymodel.java





package com.example.kristal.p_retrofit;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/** * Created by kristal on 6/25/2018. */public class Displaymodel
{


    @SerializedName("result")
    public List<Result> result;
    @SerializedName("success")
    public String success;

    public List<Result> getResult() {
        return result;
    }

    public void setResult(List<Result> result) {
        this.result = result;
    }

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public static class Result {
        @SerializedName("id")
        public String id;
        @SerializedName("f_nm")
        public String f_nm;
        @SerializedName("l_nm")
        public String l_nm;
        @SerializedName("image")
        public String image;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getF_nm() {
            return f_nm;
        }

        public void setF_nm(String f_nm) {
            this.f_nm = f_nm;
        }

        public String getL_nm() {
            return l_nm;
        }

        public void setL_nm(String l_nm) {
            this.l_nm = l_nm;
        }

        public String getImage() {
            return image;
        }

        public void setImage(String image) {
            this.image = image;
        }
    }
}





APIInterface.java



package com.example.kristal.p_retrofit.Reset;

import android.view.Display;
import com.example.kristal.p_retrofit.Displaymodel;
import retrofit2.Call;
import retrofit2.http.POST;


public interface APIInterface {

    @POST("/Demo/Displayall.php")
    Call<Displaymodel>displayall();
}





APIClient.java








package com.example.kristal.p_retrofit.Reset;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class APIClient {

   public static final String BASE_URL="https://monikashekhda26.000webhostapp.com/";
   public static Retrofit retrofit=null;

    public static Retrofit getClient()
    {
        if(retrofit==null)
        {
            retrofit=new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create()).build();
        }
        return  retrofit;

    }
}





No comments:

Post a Comment

Insert,Update and delete in Device Calender

Androidmanifest.xml < uses-permission android :name ="android.permission.WRITE_CALENDAR" /> < uses-permission androi...