android - 短信收件箱 - ListView

标签 android

你好,我正在尝试创建应用程序,女巫在 ListView 中向我显示短信,但我不知道如何通过数据填充 ListView 。我尝试这样做,但它不起作用。你能检查我的源代码并给我一些解决方案吗?谢谢

源代码:

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class Mynewtwo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ListView list = (ListView) findViewById(R.id.list);
        List<String> msgList = getSMS();


        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.main, msgList); 
        list.setAdapter(adapter);
    }

    public List<String> getSMS(){
         List<String> sms = new ArrayList<String>();
            Uri uriSMSURI = Uri.parse("content://sms/inbox");
            Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);

            while (cur.moveToNext()) {
                   String address = cur.getString(cur.getColumnIndex("address"));
                   String body = cur.getString(cur.getColumnIndexOrThrow("body"));
                  sms.add("Number: " + address + " .Message: " + body);  

              }
            return sms;

        }

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/widget30"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</LinearLayout>

最佳答案

它永远不会向您的 ListView 填充任何数据,因为您犯的错误在这里:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.main, msgList);

在这里你告诉 msgList 对象的项目将显示在 R.layout.main 文件中并且你的文件不包含任何 TextView 或其他布局对象。

所以像这样使用:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.simple_list_item_1,msgList);

关于android - 短信收件箱 - ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4905944/

相关文章:

android - 访问 TelephonyManager 方法 iccExchangeSimIO

java - 连接两个 Android 应用程序

java - 没有虚方法 getLayoutInflater

android - 如何在 Android 应用程序的 Facebook 开发者控制台添加多个类名

android - 既然可以直接使用修饰的静态成员,为什么还要使用 Intent?

android - 将 AsyncTask 与数据库一起使用

android - 如何定位径向渐变背景

android - 无法将值传递给 Android 中的另一个 Activity

android - 有没有一种树莓派ADK板

java - 无法从 MySQL 数据库中检索数据并将其放在我的 Android 应用程序的 ListView 中