显示消息后删除TextView

时间:2013-08-14 22:31:02

标签: android listview textview

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

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

有人可以解释一下为什么会发生这种情况,我可以做什么,在查询结果后,以前所有没有结果消息都消失了,列表视图“单独”?

这是我的代码:

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);
            }
        }
    });

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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