1

This is my actual code
I'm already defined setEmptyview on AsyncTask

DepartureFragmentInter.java

package com.trust.flightboard.fragment;

import java.util.ArrayList;

import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.DatePicker;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.trust.flightboard.R;
import com.trust.flightboard.adapter.DepartureAdapter;
import com.trust.flightboard.http.DepartureConnection;
import com.trust.flightboard.model.Departure;
import com.trust.flightboard.ui.DepartureDetailActivity;

public class DepartureFragmentInter extends Fragment implements
SwipeRefreshLayout.OnRefreshListener {
private DepartureAdapter mAdapter;
private ListView mListview;
private TextView mDate,flight,destination,time,gate;
ArrayList<Departure> dList = new ArrayList<Departure>();
private static int REFRESH_TIME_IN_SECONDS = 5;
public SwipeRefreshLayout swipeRefreshLayout;
DepartureConnection rest;
String airport;

public static DepartureFragmentInter newInstance() {
    return new DepartureFragmentInter();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreate(savedInstanceState);
}

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

    View viewroot = inflater.inflate(R.layout.departure_activity,container, false);

    mListview = (ListView) viewroot.findViewById(R.id.listview_maskapai);
    mDate = (TextView) viewroot.findViewById(R.id.datetime);
    swipeRefreshLayout = (SwipeRefreshLayout);
    viewroot.findViewById(R.id.lySwipeRefresh);

    flight = (TextView) viewroot.findViewById(R.id.codejudul);
    destination = (TextView) viewroot.findViewById(R.id.Bandarajudul);
    time = (TextView) viewroot.findViewById(R.id.Timejudul);
    gate = (TextView) viewroot.findViewById(R.id.Gatejudul);

    airport = getArguments().getString("airport");
    Toast.makeText(getActivity(), airport, Toast.LENGTH_LONG).show();

    Typeface typeFace =
    Typeface.createFromAsset(getActivity().getAssets(), 
    "HELVETICANEUELTPRO-BD_0.OTF");
    setTypeFace(typeFace);

    mAdapter            = new DepartureAdapter(getActivity());
    rest                = new DepartureConnection(getActivity());
    mListview.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int 
        scrollState) {
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            boolean enable = false;
            if (mListview != null && mListview.getChildCount() > 0) {
                // check if the first item of the list is visible
                boolean firstItemVisible = 
                mListview.getFirstVisiblePosition() == 0;
                // check if the top of the first item is visible
                boolean topOfFirstItemVisible = 
                mListview.getChildAt(0).getTop() == 0;
                // enabling or disabling the refresh layout
                enable = firstItemVisible && topOfFirstItemVisible;
            }
            swipeRefreshLayout.setEnabled(enable);
        }
    });

    initUI();

    new setList().execute();

    mListview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view, int 
        position, long id) {

            Intent in = new 
            Intent(getActivity(),DepartureDetailActivity.class);

            in.putExtra("code", dList.get(position).code_departure);
            in.putExtra("airport",dList.get(position).airport);
            in.putExtra("time",dList.get(position).time);
            in.putExtra("gate",dList.get(position).gate);
            in.putExtra("city",dList.get(position).airportcity);

            startActivityForResult(in, 100);

            getActivity().overridePendingTransition(R.anim.left_in,
            R.anim.left_out);
        }
    });

    return viewroot;

}
class setList extends AsyncTask<String, String, String>{
    ProgressDialog pDialog;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Please Wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }
    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        String result = "error";

        try {
            dList = rest.getAirport(airport,"Domestic");
            result = "Ok";
        } catch (Exception e) {

             e.printStackTrace();
        }
        return result;
    }
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        pDialog.dismiss();
        mAdapter.setArray(dList);
        mListview.setEmptyView(getActivity().
        findViewById(R.id.emptyElement));
        mListview.setAdapter(mAdapter);


        }
}

private void initUI() {

    swipeRefreshLayout.setOnRefreshListener(this);
    swipeRefreshLayout.setColorScheme(android.R.color.black,
    android.R.color.white,
    android.R.color.black, android.R.color.white);

}

@Override
public void onRefresh() {
    // TODO Auto-generated method stub
    Log.d("cek", "onRefresh SwipeRefreshLayout");
    new setList().execute();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            stopSwipeRefresh();
        }
    }, REFRESH_TIME_IN_SECONDS * 1000);
}

private void stopSwipeRefresh() {
    swipeRefreshLayout.setRefreshing(false);
}

class mDateSetListener implements DatePickerDialog.OnDateSetListener {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        // getCalender();

        int mYear = year;
        int mMonth = monthOfYear;
        int mDay = dayOfMonth;


    }
}
private void setTypeFace(Typeface typeFace) {
    flight.setTypeface(typeFace);
    destination.setTypeface(typeFace);
    time.setTypeface(typeFace);
    gate.setTypeface(typeFace);
    }
}

and this my departure_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/content_frame2"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bg" >

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/lySwipeRefresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/datetime"
        android:layout_below="@+id/rel1" >

        <ListView
            android:id="@+id/listview_maskapai"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/bg"
            android:cacheColorHint="@android:color/transparent"
            android:divider="@color/bg_separator"
            android:dividerHeight="1dp"
            android:paddingLeft="8dp"
            android:paddingRight="8dp" />
    </android.support.v4.widget.SwipeRefreshLayout>

    <RelativeLayout
        android:id="@+id/rel1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/text_color_white"
        android:paddingBottom="@dimen/margin_medium" >

        <LinearLayout
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/margin_medium"
            android:layout_marginRight="@dimen/margin_medium"
            android:layout_marginTop="@dimen/margin_small"
            android:orientation="horizontal"
            android:paddingLeft="8dp"
            android:paddingRight="8dp" >

            <TextView
                android:id="@+id/codejudul"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="15"
                android:text="FLIGHT"
                android:textColor="#59000000"
                android:textSize="@dimen/text_size_medium" />

            <TextView
                android:id="@+id/Bandarajudul"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="25"
                android:text="DEST"
                android:textColor="#59000000"
                android:textSize="@dimen/text_size_medium" />

            <TextView
                android:id="@+id/Timejudul"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="13"
                android:text="TIME"
                android:textColor="#59000000"
                android:textSize="@dimen/text_size_medium" />

            <TextView
                android:id="@+id/Gatejudul"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="9"
                android:text="GATE"
                android:textColor="#59000000"
                android:textSize="@dimen/text_size_medium" />
        </LinearLayout>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rel2"
        android:layout_width="match_parent"
        android:layout_height="8dp"
        android:layout_below="@+id/rel1"
        android:background="@drawable/ic_shd_tab" >
    </RelativeLayout>

    <FrameLayout
        android:id="@+id/emptyElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone" >

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/emptytext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:text="@string/emptytext"
                android:textColor="@color/text_color_white" />

            <Button
                android:id="@+id/emptybutton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/emptytext"
                android:layout_centerHorizontal="true"
                android:text="RELOAD" />
        </RelativeLayout>
    </FrameLayout>
  </RelativeLayout>

</FrameLayout>

when I load ListView contain zero record empty list view not showed
Any help will appreciate thanks

6
  • stackoverflow.com/questions/3771568/… Commented May 11, 2015 at 6:26
  • im already declared empty element but not showing Commented May 11, 2015 at 6:29
  • 1
    move mListview.setAdapter(mAdapter); to the top of mListview.setEmptyView(getActivity(). findViewById(R.id.emptyElement)); Commented May 11, 2015 at 6:44
  • your code it's work, but im still get bug from fragment, thanks anyway you should put it on answer Commented May 12, 2015 at 4:10
  • I have posted it.Please accept the answer if it has solved your problem.::) Commented May 12, 2015 at 5:14

3 Answers 3

2

Well, i wrote simple it will help you

Override onContentChanged() method

Like below:

@Override
    public void onContentChanged() {
        super.onContentChanged();
        // write you code here, when list view empty.
    }
Sign up to request clarification or add additional context in comments.

Comments

1

Change the following:

 mListview.setEmptyView(getActivity().
 findViewById(R.id.emptyElement));
 mListview.setAdapter(mAdapter);

to

mListview.setAdapter(mAdapter); 
mListview.setEmptyView(getActivity(). findViewById(R.id.emptyElement)); 

Bind the listview first and then set the empty view.

Comments

1

Place the

mListview.setEmptyView(getActivity(). findViewById(R.id.emptyElement));

below

mListview.setAdapter(mAdapter);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.