ListView in android real time

ListView (Real time):

Step 1 : create DrugsFragment fragment.

Step 2 : create listview view in layout_drugs_fragment.xml.

Step 3 : create Adapter.

Step 4 : create inflator layout (drugs_adapter_list_item.xml)

Step 5: add useful files into your android studio for ServiceIntegration for Retrofit.

Step 6: run the program and watch the output.

Step 1:

public class DrugsFragment extends Fragment {

ListView mListView;

List<DrugsModel> drugsModelList = new ArrayList<>();

DrugsAdapter drugsAdapter;

Util mUtil;

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.layout_drugs_fragment, container, false);

mUtil = new Util();

mUtil.getSharedpreferences(getActivity());

initViews(view);

getDrugs();

return view;

}

private void initViews(View view) {

mListView = (ListView) view.findViewById(R.id.drugs_fragment_listview);

}

public void callToast(String msg) {

Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();

}

private void getDrugs() {

if (mUtil.isNetworkAvailable(getActivity())) {

mUtil.showProgressDialog(getActivity());

mUtil.getBaseClassService(getActivity(), "").getDrugs(new Callback<JsonObject>() {

@Override

public void success(JsonObject jsonObject, Response response) {

if (jsonObject.get(StringConstants.STATUS).getAsString().equalsIgnoreCase("sucess")) {

JsonArray asJsonArray = jsonObject.getAsJsonArray(StringConstants.DATA);

for (int i = 0; i < asJsonArray.size(); i++) {

JsonObject object = asJsonArray.get(i).getAsJsonObject();

DrugsModel drugsModel = new DrugsModel();

drugsModel.setDrugName(object.get("company_name").getAsString());

drugsModel.setDescription(object.get("description").getAsString());

drugsModel.setImageUrl(object.get("image").getAsString());

drugsModelList.add(drugsModel);

}

drugsAdapter = new DrugsAdapter(getActivity(), drugsModelList);

mListView.setAdapter(drugsAdapter);

mUtil.dismissDialog();

} else {

mUtil.dismissDialog();

try {

Toast.makeText(getActivity(), jsonObject.get("errorMessages").getAsString(), Toast.LENGTH_LONG).show();

} catch (Exception e) {

e.printStackTrace();

}

}

}

@Override

public void failure(RetrofitError error) {

mUtil.dismissDialog();

Log.e("Lokesh", error.toString());

mUtil.serviceCallFailermsg(error,getActivity());

}

});

}

}

}

layout_drugs_fragment.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<ListView

android:id="@+id/drugs_fragment_listview"

android:layout_width="match_parent"

android:layout_height="wrap_content">

</ListView>

</RelativeLayout>

Adapter:

public class DrugsAdapter extends BaseAdapter {

LayoutInflater inflater;

Context mContext;

List<DrugsModel> drugsModelList /*= new ArrayList<>()*/;

private ImageLoader mImageLoader;

private DisplayImageOptions logooptions;

DoctorAppApplication application;

Util mUtil;

// DoctorAppApplication application;

public DrugsAdapter(Activity activity, List<DrugsModel> drugsModelList) {

this.mContext = activity;

this.drugsModelList = drugsModelList;

mUtil = new Util();

application = (DoctorAppApplication) activity.getApplication();

mImageLoader = application.rounderCornerImageLoader;

}

@Override

public int getCount() {

return drugsModelList.size();

}

@Override

public Object getItem(int i) {

return drugsModelList.get(i);

}

@Override

public long getItemId(int i) {

return i;

}

@Override

public View getView(int i, View convertView, ViewGroup viewGroup) {

Holder holder = new Holder();

if (inflater == null){

inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

if (convertView == null) {

convertView = inflater.inflate(R.layout.drugs_adapter_list_item, null);

convertView.setTag(holder);

}else {

holder = (Holder) convertView.getTag();

}

// holder.mUsername = (TextView)convertView.findViewById(R.id.drugs_adapter_name_tv);

holder.tvName = (TextView) convertView.findViewById(R.id.drugs_adapter_name_tv);

holder.tvDescription = (TextView) convertView.findViewById(R.id.drugs_adapter_drugs_description);

holder.ivDrugImage = (ImageView) convertView.findViewById(R.id.drugs_adapter_imageview);

DrugsModel drugsModel = drugsModelList.get(i);

// holder.mUsername.setText(drugsModel.getDrugName());

holder.tvName.setText(drugsModel.getDrugName());

holder.tvDescription.setText(drugsModel.getDescription());

mImageLoader.displayImage(StringConstants.IMAGE_BASE_URL +"drugs/"+ drugsModel.getImageUrl(), holder.ivDrugImage);

Log.e("Lokesh","image url in drugs"+StringConstants.IMAGE_BASE_URL + "drugs/"+ drugsModel.getImageUrl());

return convertView;

}

public class Holder{

private TextView mUsername,tvName,tvDescription;

private ImageView ivDrugImage;

}

}

drugs_adapter_list_item.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

xmlns:tools="http://schemas.android.com/tools"

android:background="@color/unselected"

android:orientation="vertical">

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="@dimen/margin_90"

android:gravity="center_vertical"

android:layout_margin="@dimen/bp_margin_5"

android:elevation="@dimen/bp_margin_5"

android:background="@drawable/list_item_padding">

<ImageView

android:id="@+id/drugs_adapter_imageview"

android:layout_width="@dimen/margin_100"

android:layout_height="@dimen/margin_100"

android:padding="@dimen/bp_margin_10"

android:scaleType="fitXY"

tools:src="@drawable/editprofile" />

<View

android:id="@+id/vertical_view"

android:layout_width="@dimen/bp_margin_1"

android:layout_height="@dimen/margin_110"

android:layout_toRightOf="@+id/drugs_adapter_imageview"

android:background="@color/hashtintedittext" />

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginLeft="@dimen/bp_margin_7"

android:layout_toRightOf="@+id/vertical_view">

<TextView

android:id="@+id/drugs_adapter_name_tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="@dimen/bp_margin_3"

android:text="@string/name" />

<!--<TextView-->

<!--android:id="@+id/drugs_adapter_dosage_tv"-->

<!--android:layout_width="wrap_content"-->

<!--android:layout_height="wrap_content"-->

<!--android:layout_below="@+id/drugs_adapter_name_tv"-->

<!--android:padding="@dimen/bp_margin_3"-->

<!--android:text="@string/dosage"-->

<!--android:visibility="invisible"/>-->

<TextView

android:id="@+id/drugs_adapter_drugs_description"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/drugs_adapter_name_tv"

android:padding="@dimen/bp_margin_3"

android:text="@string/description" />

</RelativeLayout>

</RelativeLayout>

</RelativeLayout>

Useful Files for Retrofit:

StringConstansts.java

public class StringConstants {

public static final String BASE_CLASSES_URL = "http://drapp.sciensdemos.in/index.php/doctorapp_services/";

public static final String DEV = "dev";

public static final String STATUS = "status";

public static String errorMessage = "errorMessage";

public static String message = "message";

public static String LAUNCHERIMAGEFROMDRIVE = "https://drive.google.com/open?id=0B-avwtCVeNFOMjRrQnBJVHdNQ2s";

public static String DATA = "data";

public static String FIRSTNAME = "firstname";

public static String LASTNAME = "lastname";

public static String EMAIL = "email";

public static String USERID = "id";

public static String MOBILENUMBER = "mobilenumber";

public static String IMAGE_BASE_URL= "http://drapp.sciensdemos.in/assets/uploads/";

}

Util.java

public class Util {

private static final String MyPREFERENCES = "MyPrefs";

private static SharedPreferences sharedpreferences;

MaterialDialog ringProgressDialog = null;

public static SharedPreferences getSharedpreferences(Context context) {

if (sharedpreferences == null)

sharedpreferences = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

return sharedpreferences;

}

public static void setString(String key, String value) {

SharedPreferences.Editor editor = sharedpreferences.edit();

editor.putString(key, value);

editor.commit();

}

public static String getString(String key) {

return sharedpreferences.getString(key, "");

}

public static void setBoolean(String key, boolean value) {

SharedPreferences.Editor editor = sharedpreferences.edit();

editor.putBoolean(key, value);

editor.commit();

}

public static boolean isNetworkAvailable(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = cm.getActiveNetworkInfo();

if (info == null) return false;

NetworkInfo.State network = info.getState();

return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);

}

public void showProgressDialog(final Context ctx) {

if (ringProgressDialog == null) {

ringProgressDialog = new MaterialDialog.Builder(ctx)

.title(ctx.getResources().getString(R.string.app_name))

.content("Please wait.... ")

.progress(true, 0)

.theme(Theme.LIGHT)

.cancelable(false)

.show();

ringProgressDialog.setOnShowListener(new DialogInterface.OnShowListener() {

@Override

public void onShow(DialogInterface dialog) {

ProgressBar v = (ProgressBar) ringProgressDialog.findViewById(android.R.id.progress);

v.getIndeterminateDrawable().setColorFilter(ctx.getResources().getColor(R.color.colorPrimary),

android.graphics.PorterDuff.Mode.MULTIPLY);

}

});

}

}

public void dismissDialog() {

if (ringProgressDialog != null) {

if (ringProgressDialog.isShowing()) {

ringProgressDialog.dismiss();

ringProgressDialog = null;

}

}

}

public ServiceOperations getBaseClassService(Context ctx, String url) {

return new RetroHelper().getAdapter(ctx, url).create(ServiceOperations.class);

}

public void serviceCallFailermsg(RetrofitError error, Context mcontext) {

if (error != null) {

try {

String body = new String(((TypedByteArray) error.getResponse().getBody()).getBytes());

Log.v("failure", body.toString());

JsonObject errorJson = new Gson().fromJson(body, JsonObject.class);

singelButtonAlertDialog(mcontext, mcontext.getResources().getString(R.string.app_name), errorJson.get(StringConstants.message).getAsString());

} catch (Exception e) {

singelButtonAlertDialog(mcontext, mcontext.getResources().getString(R.string.app_name), mcontext.getString(R.string.errormessage));

}

} else {

singelButtonAlertDialog(mcontext, mcontext.getResources().getString(R.string.app_name), mcontext.getString(R.string.errormessage));

}

}

}

RetroHelper.java

public class RetroHelper {

public static String mEnvironment = StringConstants.DEV;

private static Context mContext;

public static RestAdapter getAdapter(Context ctx, String serverUrl) {

mContext=ctx;

RestAdapter restAdapter = new RestAdapter.Builder()

.setEndpoint(StringConstants.BASE_CLASSES_URL+serverUrl)

.setLogLevel(RestAdapter.LogLevel.FULL).setLog(new RestAdapter.Log() {

@Override

public void log(String msg) {

Log.i("Retro Helper", msg);

}

})

.setClient(new OkClient(new OkHttpClient()))

.build();

return restAdapter;

}

}

ServiceOperations.java

public interface ServiceOperations {

@GET("/drug_data")

void getDrugs(Callback<JsonObject> callback);

}

Output:

drugs list