0

按下按钮后,会执行查询,如果有数据或没有返回数据,则返回数据。然后将此数据发送到我的列表视图。如果查询中有结果,则一切都按预期工作。如果没有返回数据,我有一个子句,以便TextView创建 an 并向用户显示一条消息。

想象一下,我在按下按钮时执行了一个查询,但没有返回任何数据。我的消息按预期呈现给用户。如果然后我执行返回一些数据的查询,则消息会消失,并且列表视图会按预期填充。现在想象一下,在没有数据的第一个查询之后(将消息呈现给用户),我执行了另一个仍然没有返回数据的查询。显示消息(可能显示在前一个消息的“上方”),如果我现在使用数据执行查询,我的列表视图已填充,但消息仍然存在。

有人能解释一下为什么会发生这种情况吗?在查询结果后,所有以前的无结果消息都消失并且列表视图“单独”消失,我该怎么办?

这是我的代码:

searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //GETS THE DATA

            ListView listContent = (ListView) findViewById(android.R.id.list);
            MySimpleAdapt arrayListAdapter = new MySimpleAdapt(Search.this, allData);
            listContent.setAdapter(arrayListAdapter);

            if (allData.size() == 0) {
                TextView emptyView = new TextView(getApplicationContext());
                emptyView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                emptyView.setTextColor(Color.BLACK);
                emptyView.setText(R.string.notFound);
                emptyView.setPadding(4, 30, 4, 30);
                emptyView.setTextSize(30);
                emptyView.setVisibility(View.GONE);
                emptyView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

                if (getListView().getParent() != null) {
                    ((ViewGroup) getListView().getParent()).addView(emptyView);
                }
                getListView().setEmptyView(emptyView);
            }
        }
    });
4

2 回答 2

1

每次遇到没有数据的情况时,无需创建 TextView。将其作为成员存储在您的班级中并仅初始化一次

于 2013-08-14T22:36:35.190 回答
1

您可以在 XML 布局中声明您的 TextView,并根据需要设置文本样式,并将visibility属性设置为goneandroid:visibility="gone"

以编程方式取回它:textView.setVisibility(View.VISIBLE)

再次隐藏它:textView.setVisibility(View.GONE)

于 2013-08-15T00:04:56.617 回答