列表视图不再显示任何SMS数据?

时间:2015-04-09 00:49:44

标签: java android android-listview sms

我有我的列表视图,以便更早地显示所有短信,但在重新运行应用程序之后...由于某种原因,列表视图显示为空,我知道为什么我会出现空白屏幕,如何解决此问题?

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

1 个答案:

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