Android TextView始终显示在ListView后面

Android TextView始终显示在ListView后面,android,listview,textview,android-arrayadapter,listadapter,Android,Listview,Textview,Android Arrayadapter,Listadapter,在前面的回答中,我一直在查看列表视图,但似乎找不到解决问题的方法。基本上,尽管成功地从SQLite数据库检索到数据数组,但即使成功填充列表,没有数据时的TextView仍然可见 我试图在历史记录活动中显示以前的用户输入,如下所示: HistoryActivity.java public class HistoryActivity extends ListActivity { @Override protected void onCreate(@Nullable Bundle savedInst

在前面的回答中,我一直在查看列表视图,但似乎找不到解决问题的方法。基本上,尽管成功地从SQLite数据库检索到数据数组,但即使成功填充列表,没有数据时的TextView仍然可见

我试图在历史记录活动中显示以前的用户输入,如下所示:

HistoryActivity.java

public class HistoryActivity extends ListActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

    SimpleCursorAdapter mAdapter;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_history);

    // progress bar
    // Create a progress bar to display while the list loads
    ProgressBar progressBar = new ProgressBar(this);
    progressBar.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT));
    progressBar.setIndeterminate(true);
    getListView().setEmptyView(progressBar);

    // Must add the progress bar to the root of the layout
    ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
    root.addView(progressBar);

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
            this,
            android.R.layout.simple_list_item_1,
            array);
    setListAdapter(arrayAdapter);
}
公共类HistoryActivity扩展了ListActivity{
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
简单的适应;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
//进度条
//创建一个进度条,以便在加载列表时显示
ProgressBar ProgressBar=新的ProgressBar(此);
progressBar.setLayoutParams(新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,
RelativeLayout.LayoutParams.WRAP_内容);
progressBar.SetUndeterminate(真);
getListView().setEmptyView(progressBar);
//必须将进度条添加到布局的根目录
ViewGroup root=(ViewGroup)findviewbyd(android.R.id.content);
root.addView(progressBar);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(
这
android.R.layout.simple\u list\u item\u 1,
阵列);
setListAdapter(arrayAdapter);
}
activity_history.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">


    <ListView android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:dividerHeight="1dp"
        android:layout_weight="1"/>

    <TextView
        android:text="Nothing saved. Try to answer some questions now!"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="12dp"
        android:id="@android:id/empty"
    />

</RelativeLayout>

根据前面的SO回答,我已经确保了.xml文件中的ID是正确的,并且据我所知,在扩展ListActivity时,您不需要使用.setEmptyView()

我可能错过了一些基本的东西,所以任何帮助都将不胜感激


提前感谢!

我没有正确理解您的问题…我得到的是,当列表充满项目时,文本视图仍然可见

  • 我想你只是得到了文本视图的引用

    TextView emptyView=(TextView)findViewById(R.id.empty)

  • 然后检查是否(list.size>0)

    使文本视图不可见

    emptyView.setVisibility(View.GONE)

  • 否则将其设置为可见(View.visible)


我没有正确理解您的问题……我得到的是,当列表充满项目时,文本视图仍然可见

  • 我想你只是得到了文本视图的引用

    TextView emptyView=(TextView)findViewById(R.id.empty)

  • 然后检查是否(list.size>0)

    使文本视图不可见

    emptyView.setVisibility(View.GONE)

  • 否则将其设置为可见(View.visible)


如果列表不是空的,你必须
setVisibility=“gone”
到文本视图,如果列表是空的,你必须
setVisibility=“gone”
到文本视图,如果列表是空的,你必须
textView emptyView=(textView)findviewbyd(android.R.id.empty);if(array.length>0){emptyView.setVisibility(View.GONE);}else{emptyView.setVisibility(View.VISIBLE);}
但无效。即使在填充列表时,列表为空时的文本视图也会继续显示。我实现了
TextView emptyView=(TextView)findViewById(android.R.id.empty);if(array.length>0){emptyView.setVisibility(View.GONE);}else{emptyView.setVisibility(View.VISIBLE);}
但没有用。即使填充了列表,也会继续显示用于列表为空时的文本视图。