我有我的列表视图,以便更早地显示所有短信,但在重新运行应用程序之后...由于某种原因,列表视图显示为空,我知道为什么我会出现空白屏幕,如何解决此问题?
package com.example.sunny.messager;
import java.util.ArrayList;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ListView lv=(ListView)findViewById(R.id.SmsList);
if(fetchInbox()!=null){
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,fetchInbox());
lv.setAdapter(adapter);
}
}
public ArrayList<String> fetchInbox(){
ArrayList<String> sms=new ArrayList<String>();
Uri uriSms=Uri.parse("content://sms/inbox");
Cursor cursor=getContentResolver().query(uriSms, new String[]{"_id","address","date","body"}, null, null, null);
cursor.moveToFirst();
while(cursor.moveToNext()){
String address=cursor.getString(1);
String body=cursor.getString(3);
sms.add("Address: " +address+"\n Sms: " +body);
}
return sms;
}
}
答案 0 :(得分:0)
我不确定您的收件箱是否为空。尝试使用&#34; content:// sms /&#34;和 看看你能不能得到任何物品。
此外,您的代码正在调用fetchInbox函数两次。 您可以尝试以下方法以提高效率。
ArrayList<String> aItems = fetchInbox():
if ( aItems.size() > 0 )
{
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,aItems);
lv.setAdapter(adapter);
}