0

我喜欢在 listView 中没有项目时显示 textView,而当 listView 中有项目时 textView 不会显示。我的问题是即使listView中有项目,textView仍然会在短时间内显示,然后将项目加载到listView中。那么,当listView中有item时,如何让TextView不可见呢?

这是代码:

 public void onCreate(Bundle savedInstancesState){
    super.onCreate(savedInstancesState);
    setContentView(R.layout.list_screen);
    user = getIntent().getExtras().getString("user");
    Log.d("dg",user);
    getList();
    lv = (ListView) findViewById(android.R.id.list);
    emptyText = (TextView)findViewById(android.R.id.empty);
    lv.setEmptyView(emptyText);       
}

public void getList(){
    new Thread(){
        public void run(){
            try{
                 httpclient = new DefaultHttpClient();
                 httppost = new HttpPost("http://www.kryptoquest.com/tracker/friendlist.php");
                 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
                 nameValuePairs.add(new BasicNameValuePair("Username", user));
                 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                 response = httpclient.execute(httppost);
                 is = response.getEntity().getContent();
            }catch(Exception e){
                Log.e("log_tag", "Error:"+e.toString());
            }

            //convert response to string
            try{
                    reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    sb = new StringBuilder();
                    line = null;
                    while ((line = reader.readLine()) != null) {

                            sb.append(line + "\n");

                    }
                    Log.d("test",sb.toString());
                    is.close();

                    result = sb.toString();

                    result = result.substring(0, result.length()-1);                    
                //    Log.d("result",result);
                    friend = new ArrayList<String>(Arrays.asList(result.split("[*]")));   
                  Log.d("size",String.valueOf(friend.size()));
                    runOnUiThread(new Runnable()
                    {
                        public void run(){
                            adapter = new ArrayAdapter<String>(ThirdActivity.this,android.R.layout.simple_list_item_1,friend);
                            setListAdapter(adapter); 
                        }
                    });


            }catch(Exception e){
                    Log.e("log_tag", "Error converting result "+e.toString());
            }
        }
    }.start();
}

list_screen.xml

 <?xml version="1.0" encoding="UTF-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >

<ListView android:id="@+id/android:list"
      android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

<TextView   android:id="@+id/android:empty"
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:text="@string/no_friend"
            android:gravity="center_vertical|center_horizontal"/>

</LinearLayout>
4

4 回答 4

0

我的问题是即使listView中有项目,textView仍然会在短时间内显示,然后将项目加载到listView中。

不要setEmptyView()在 in 中使用onCreate(),而是在你的 XML 中添加android:visibility="gone"到 TextView 并setEmptyView() 调用后使用setAdapter()

adapter = new ArrayAdapter<String>(ThirdActivity.this,android.R.layout.simple_list_item_1,friend);
setListAdapter(adapter); 
lv.setEmptyView(emptyText);       
于 2012-12-07T05:28:54.840 回答
0

您可以使用if类似的语句来简单地做到这一点

if (listView.getSize() > 0){
    textView.setVisibility(View.GONE);
    //or use
    textView.setVisibility(View.INVISIBLE);
} else {
    //your list is empty
    textView.setVisibility(View.VISIBLE);
}

诅咒你需要在添加adapter到你的之后调用它ListView

于 2012-12-07T05:50:31.363 回答
0

我在这里回答了一个类似的问题:

使用 SimpleAdapter 时为列表视图项设置标签

和这里

使用 SimpleAdapter 更改 ListView 中项目的颜色

于 2013-06-15T15:53:55.213 回答
0

如果有一个有用方法的列表项,您可以隐藏 textView:AdapterView.setEmptyView (View emptyView)

这是一个例子: ListView listView; 文本视图文本视图;

listView.setEmptyView (textView); 这将在列表中有项目时自动隐藏 textView 并在 listView 为空时显示 textView!

于 2019-05-21T00:27:58.587 回答