列表视图为空时,SetEmptyView不显示文本和按钮

时间:2015-05-11 06:22:37

标签: android listview

这是我的实际代码
我已经在setEmptyview

上定义了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);
    }
}

这是我的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>

当我加载ListView包含零记录空列表视图未显示
时 任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

好吧,我写的很简单,它会帮助你

覆盖onContentChanged()方法

如下所示:

@Override
    public void onContentChanged() {
        super.onContentChanged();
        // write you code here, when list view empty.
    }

答案 1 :(得分:1)

更改以下内容:

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

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

首先绑定列表视图,然后设置空视图。

答案 2 :(得分:1)

放置

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

下面

mListview.setAdapter(mAdapter);
相关问题