我喜欢在listView中没有项目时显示textView,而当listView中有项目时,textView将不会显示。我的问题是,即使listView中有项目,textView仍会在短时间内显示,然后将项目加载到listView中。那么,当listView中有项目时,如何使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>
答案 0 :(得分:0)
我的问题是,即使listView中有项目,textView仍然会在短时间内显示,然后将项目加载到listView中。
请勿在{{1}}中使用setEmptyView()
,而是将onCreate()
添加到XML中的TextView,并在调用{{}后使用android:visibility="gone"
1}}。
setEmptyView()
答案 1 :(得分: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
后,您需要调用此诅咒
答案 2 :(得分:0)
答案 3 :(得分:0)
如果存在使用有效方法的列表项,则可以隐藏textView: AdapterView.setEmptyView(查看emptyView)
这是一个示例: ListView listView; TextView textView;
listView.setEmptyView(textView); 当列表中有项目时,它将自动隐藏textView;当listView为空时,它将自动显示textView!