将新收到/发送的邮件添加到listview Android

时间:2016-02-16 12:27:28

标签: java android listview sms android-cursoradapter

我正在创建一个Android应用程序来发送和接收短信。 但我无法在ListView中显示新的传入消息。

以下是我用来填充ListView的代码:

ListView lv = (ListView) view.findViewById(R.id.lvConversations);
Cursor c = getActivity().getContentResolver().query(INBOX_URI, projection, "address = '" + address + "'", null, "date");
ConversationCursorAdapter adap = new ConversationCursorAdapter(getActivity(),c);
lv.setAdapter(adap);
lv.setSelection(lv.getCount() - 1);

这是我的ConversationCursorAdapter

public class ConversationCursorAdapter extends CursorAdapter {

public ConversationCursorAdapter(Context context, Cursor c) {
    super(context, c, 0);
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return LayoutInflater.from(context).inflate(R.layout.msg, parent, false);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView tvBody = (TextView) view.findViewById(R.id.tvBody);
    TextView tvDate = (TextView) view.findViewById(R.id.tvDate);
    String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
    Long date = cursor.getLong(cursor.getColumnIndexOrThrow("date"));
    tvBody.setText(body);
    tvDate.setText(date.toString());

}}

我也有一个听众来获取新消息,但让我们首先关注发送消息。当用户点击发送按钮时,消息将被发送,但不会显示在列表视图中。这是发送消息的代码。

Button btnSend = (Button) view.findViewById(R.id.btnSend);
    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText et = (EditText) getView().findViewById(R.id.etSendMessage);
            SmsManager manager = SmsManager.getDefault() ;
            manager.sendTextMessage(toAddress, null, body, null, null);
            et.setText("");
        }
    });

有人可以告诉我我做错了什么吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

首先使用String ACTION =等一些独特的动作创建广播接收器 “message.received”;

将此操作字符串用作意图过滤器操作字符串

然后在API获取新数据时通知广播接收器。

然后将新行添加到列表视图,然后您可以通过notifyDataSetChanged()进行存档;