如何检查Listview是否为空

时间:2014-09-05 19:11:14

标签: android android-listview parse-platform

我的活动查询我的解析数据库,然后根据查询重新设置数据。数据以列表视图中的名称存储。但我无法弄清楚如何检查列表视图是否为空。我希望它发布一个警告,说明列表视图在事件发生时是空的。这是我的活动

public class OfferPage extends Activity {
    String obj;
    ProgressDialog mProgressDialog;

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

        Intent i = getIntent();
        obj = i.getStringExtra("RestName");
        populateList(obj, "Restraunt");

    }

    private void populateList(final String Value, final String Key) {
        ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {

            @Override
            @SuppressWarnings({ "unchecked", "rawtypes" })
            public ParseQuery create() {
                ParseQuery query = new ParseQuery("Offers");
                query.whereEqualTo(Key, Value);
                return query;
            }
        };
        ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(
                this, factory);
        adapter.setTextKey("Offer");
        adapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() {

            @Override
            public void onLoading() {
                mProgressDialog = new ProgressDialog(OfferPage.this);
                mProgressDialog.setTitle("Searching for Offers");
                mProgressDialog.setMessage("Loading...");
                mProgressDialog.setIndeterminate(false);
                mProgressDialog.show();
            }

            @Override
            public void onLoaded(List<ParseObject> objects, Exception e) {
                mProgressDialog.dismiss();
            }
        });

        final ListView listView = (ListView) findViewById(R.id.offerList);
        listView.setAdapter(adapter);
    }

我的主要问题我似乎无法弄清楚如果列表为空,在哪里检查。有什么建议吗?

4 个答案:

答案 0 :(得分:6)

您必须控制适配器是否为空,而不是列表视图,因为适配器保存值。

      if (adapter== null) {
            adapter= new  ParseQueryAdapter(this,getElements());
            eList.setAdapter(adapter);
        } else {
            adapter.addAll(getElements());
        }

答案 1 :(得分:1)

你可以通过使用你的适配器来做到这一点,你必须做youradapter.getCount(),它应该给你listview中元素的数量,因为当你填充listview时你真正在做的是输入数据从适配器并创建该数据的列表项。

答案 2 :(得分:0)

  

数据以列表视图中的名称存储。

嗯,不是真的。 ListView显示您的数据。数据本身存储在别处。使用Adapter对数据进行绑定列表视图,以查看您是否需要通过调用getCount()来查询适配器所需的任何数据

答案 3 :(得分:0)

使用方法setEmptyView设置视图以显示适配器是否为空。