0

次のコードはエラー メッセージを示しています。

setListAdapter(new ArrayAdapter<String>(this, R.layout.main,mSmsReceiver));

エラー メッセージ: コンストラクター ArrayAdapter(SmsActivity, int, SmsActivity.SmsReceived) は定義されていません

完全なコードを以下に示します。

私の質問:

  1. エラーを修正するにはどうすればよいですか?
  2. 代わりに mSmsReceiver を使用して、どのように/何を変更して str (以下) にメッセージを ListView に表示する必要がありますか?

    str += "SMS from " + msgs[i].getOriginatingAddress(); 
    

完全なコード:

    import...
    ....   

    public class SmsActivity extends ListActivity {
    private SmsReceived mSmsReceiver;
    public SmsActivity(){
    mSmsReceiver = new SmsReceived();

    setListAdapter(new ArrayAdapter<String>(this, R.layout.main,mSmsReceiver));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    //---method is call when listitem is clicked---
    listView.setOnItemClickListener(new OnItemClickListener() {edit later});
    }


    private class SmsReceived extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";     
        if (bundle != null)
        {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
                str += "SMS from " + msgs[i].getOriginatingAddress();                          

            }
        }
    }
    }
    }

**申し訳ありませんが、私はこのことについて本当に新しすぎるので、コードを直接編集して、あなたが言おうとしていることを確認できることを願っています. 負担が大きかったら本当にすみません…

4

1 に答える 1

1

エラーを修正するには、アダプターのパラメーターとして正しいオブジェクト タイプが必要です。ArrayAdapterデータ型を持つつもりだと言っているStringので、配列またはリストコレクションオブジェクトに type を提供する必要がありますString

これを変える:

private SmsReceived mSmsReceiver;

これに:

private String[] mSmsReceiver;
//or
private List<String> mSmsReceiver

mSmsReceiverのデータ型を変更した後、ArrayAdapterにプッシュする前に、必ず初期化してデータを入力してください。

于 2012-08-06T07:53:52.180 に答える