Java 使用基本广播接收器刷新列表视图

Java 使用基本广播接收器刷新列表视图,java,android-studio,Java,Android Studio,首先,这是我的代码 public class SMSReceiver extends BroadcastReceiver { String from; String msg; long time; @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[]

首先,这是我的代码

public class SMSReceiver extends BroadcastReceiver {

String from;
String msg;
long time;

@Override
public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        Object[] pdus = (Object[]) bundle.get("pdus");
        SmsMessage[] messages = new SmsMessage[pdus.length];
        for (int i = 0; i < pdus.length; i++) {
            // Convertir les PDUs en messages
            messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        }

        // Enfin, traiter les messages
        for (SmsMessage message : messages) {
            from = message.getOriginatingAddress();
            msg = message.getMessageBody();
            time = message.getTimestampMillis();
            Toast.makeText(context, "Message de " + from + " : " + msg, Toast.LENGTH_LONG).show();
        }
        abortBroadcast();
    }
}
它不起作用:/

这是我的邮件列表视图

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar_messa"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#f4f4f4"
        android:visibility="visible"
        app:theme="@style/CustomActionBar">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Contact"
            android:textColor="#000"
            android:textSize="30sp"
            android:theme="@android:style/DeviceDefault.ButtonBar.AlertDialog"
            android:id="@+id/tv_toolbar"
            android:singleLine="true"
            android:ellipsize="end" />

        <TextView
            android:id="@+id/tvDetails"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:singleLine="false"
            android:text="@string/Details"
            android:textColor="#3391e4"
            android:textSize="20sp"
            android:theme="@android:style/DeviceDefault.ButtonBar.AlertDialog" />
    </android.support.v7.widget.Toolbar>

    <ListView
        android:id="@+id/lv_message"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:stackFromBottom="true"
        android:windowSoftInputMode="adjustResize" />

    <RelativeLayout
        android:id="@+id/layout_send"
        android:layout_width="match_parent"
        android:layout_height="46dp">

        <EditText
            android:id="@+id/Et_message"
            android:layout_width="294dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_gravity="bottom"
            android:inputType="text"
            android:textCursorDrawable="@null" />

        <ImageButton
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/Et_message"
            android:layout_toEndOf="@+id/Et_message"
            android:layout_toRightOf="@+id/Et_message"
            android:background="#00ffffff"
            android:contentDescription="@string/app_name"
            android:src="@drawable/btnsend" />
    </RelativeLayout>

</LinearLayout>

这是我的适配器

public class MessageAdapter extends BaseAdapter {

    ArrayList<CreateMessageAdapter>     listMessage;
    Context                             context;
    LayoutInflater                      Inflater;

    public MessageAdapter(ArrayList<CreateMessageAdapter> listMessage, Context context) {
        this.listMessage = listMessage;
        this.context = context;
        Inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        return listMessage.size();
    }

    @Override
    public Object getItem(int position) {
        return listMessage.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        RelativeLayout layoutItem;
        //(1) : Réutilisation des layouts
        if (convertView == null) {
            //Initialisation de notre item à partir du  layout XML "personne_layout.xml"
            layoutItem = (RelativeLayout) Inflater.inflate(R.layout.list_item, parent, false);
        } else {
            layoutItem = (RelativeLayout) convertView;
        }

        //(2) : Récupération des TextView de notre layout
        TextView tv_destinateur = (TextView)layoutItem.findViewById(R.id.tv_destinataire);
        TextView tv_envoyeur = (TextView)layoutItem.findViewById(R.id.tv_envoyeur);
        TextView smallDate = (TextView)layoutItem.findViewById(R.id.smallDate);
        TextView smallDateSent = (TextView)layoutItem.findViewById(R.id.smallDateSent);
        ImageView cross = (ImageView)layoutItem.findViewById(R.id.imCross);

        //(3) : Renseignement des valeurs
        if ((listMessage.get(position).people) == 2) {
            tv_destinateur.setBackgroundResource(0);
            tv_envoyeur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                    counter++;
            }
            String dateString = new SimpleDateFormat("dd/MM kk:mm:ss").format(new Date(listMessage.get(position).date));
            smallDate.setText("");
            smallDateSent.setText(dateString);
            tv_envoyeur.setMinWidth(counter);
            tv_envoyeur.setMaxWidth(650);
            tv_envoyeur.setBackgroundResource(R.drawable.box2bg);
            tv_destinateur.setText("");
        }
        else if ((listMessage.get(position).people) == 1) {
            tv_envoyeur.setBackgroundResource(0);
            tv_destinateur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                counter++;
            }
            String dateString = new SimpleDateFormat("dd/MM kk:mm:ss").format(new Date(listMessage.get(position).date));
            smallDateSent.setText("");
            smallDate.setText(dateString);
            tv_destinateur.setMinWidth(counter);
            tv_destinateur.setMaxWidth(650);
            tv_destinateur.setBackgroundResource(R.drawable.boxbg);
            tv_envoyeur.setText("");
        }
        else if ((listMessage.get(position).people) == 5 || (listMessage.get(position).people) == 6) {
            tv_destinateur.setBackgroundResource(0);
            tv_envoyeur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                counter++;
            }
            smallDate.setText("");
            tv_envoyeur.setMinWidth(counter);
            tv_envoyeur.setMaxWidth(650);
            cross.setImageResource(getImageId("croixrouge"));
            cross.setMaxWidth(5);
            cross.setMaxHeight(5);
            tv_envoyeur.setBackgroundResource(R.drawable.errormsg);
            tv_destinateur.setText("");
        }

        //On retourne l'item créé.
        return layoutItem;
    }

    public int getImageId(String imageName) {
        return context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
    }
}
公共类MessageAdapter扩展了BaseAdapter{
ArrayList列表消息;
语境;
充气机;
公共消息适配器(ArrayList listMessage,上下文){
this.listMessage=listMessage;
this.context=上下文;
充气器=充气器。从(上下文);
}
@凌驾
public int getCount(){
返回listMessage.size();
}
@凌驾
公共对象getItem(int位置){
返回listMessage.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
相对布局项目;
//(1) :Ré布局的利用率
if(convertView==null){
//布局XML“personne_layout.XML”的一部分的notre项目初始化
layoutItem=(RelativeLayout)充气器。充气(R.layout.list_项,父项,false);
}否则{
layoutItem=(RelativeLayout)convertView;
}
//(2) :Récupération des TextView de notre布局
TextView tv_destinator=(TextView)layoutItem.findViewById(R.id.tv_destinataire);
TextView电视特使=(TextView)布局项findViewById(R.id.tv_特使);
TextView smallDate=(TextView)layoutItem.findViewById(R.id.smallDate);
TextView smallDateSent=(TextView)layoutItem.findviewbyd(R.id.smallDateSent);
ImageView cross=(ImageView)layoutItem.findViewById(R.id.imCross);
//(3) :瓦卢尔重新签署
if((listMessage.get(position.people)==2){
目的地电视资源(0);
tv_envoyer.setText(listMessage.get(position.message));
int计数器=0;

对于(int i=0;我可以详细说明您的问题吗?我的问题是,如何使用此BroadcastReceiver刷新我的listView:)您可以发布列表视图实例化代码吗?没关系,我更新了我的帖子我们仍然需要来自listView创建和自定义适配器的代码(如果您有自定义适配器,也就是说)。
public class MessageAdapter extends BaseAdapter {

    ArrayList<CreateMessageAdapter>     listMessage;
    Context                             context;
    LayoutInflater                      Inflater;

    public MessageAdapter(ArrayList<CreateMessageAdapter> listMessage, Context context) {
        this.listMessage = listMessage;
        this.context = context;
        Inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        return listMessage.size();
    }

    @Override
    public Object getItem(int position) {
        return listMessage.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        RelativeLayout layoutItem;
        //(1) : Réutilisation des layouts
        if (convertView == null) {
            //Initialisation de notre item à partir du  layout XML "personne_layout.xml"
            layoutItem = (RelativeLayout) Inflater.inflate(R.layout.list_item, parent, false);
        } else {
            layoutItem = (RelativeLayout) convertView;
        }

        //(2) : Récupération des TextView de notre layout
        TextView tv_destinateur = (TextView)layoutItem.findViewById(R.id.tv_destinataire);
        TextView tv_envoyeur = (TextView)layoutItem.findViewById(R.id.tv_envoyeur);
        TextView smallDate = (TextView)layoutItem.findViewById(R.id.smallDate);
        TextView smallDateSent = (TextView)layoutItem.findViewById(R.id.smallDateSent);
        ImageView cross = (ImageView)layoutItem.findViewById(R.id.imCross);

        //(3) : Renseignement des valeurs
        if ((listMessage.get(position).people) == 2) {
            tv_destinateur.setBackgroundResource(0);
            tv_envoyeur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                    counter++;
            }
            String dateString = new SimpleDateFormat("dd/MM kk:mm:ss").format(new Date(listMessage.get(position).date));
            smallDate.setText("");
            smallDateSent.setText(dateString);
            tv_envoyeur.setMinWidth(counter);
            tv_envoyeur.setMaxWidth(650);
            tv_envoyeur.setBackgroundResource(R.drawable.box2bg);
            tv_destinateur.setText("");
        }
        else if ((listMessage.get(position).people) == 1) {
            tv_envoyeur.setBackgroundResource(0);
            tv_destinateur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                counter++;
            }
            String dateString = new SimpleDateFormat("dd/MM kk:mm:ss").format(new Date(listMessage.get(position).date));
            smallDateSent.setText("");
            smallDate.setText(dateString);
            tv_destinateur.setMinWidth(counter);
            tv_destinateur.setMaxWidth(650);
            tv_destinateur.setBackgroundResource(R.drawable.boxbg);
            tv_envoyeur.setText("");
        }
        else if ((listMessage.get(position).people) == 5 || (listMessage.get(position).people) == 6) {
            tv_destinateur.setBackgroundResource(0);
            tv_envoyeur.setText(listMessage.get(position).message);
            int counter = 0;
            for( int i=0; i<listMessage.get(position).message.length(); i++ ) {
                counter++;
            }
            smallDate.setText("");
            tv_envoyeur.setMinWidth(counter);
            tv_envoyeur.setMaxWidth(650);
            cross.setImageResource(getImageId("croixrouge"));
            cross.setMaxWidth(5);
            cross.setMaxHeight(5);
            tv_envoyeur.setBackgroundResource(R.drawable.errormsg);
            tv_destinateur.setText("");
        }

        //On retourne l'item créé.
        return layoutItem;
    }

    public int getImageId(String imageName) {
        return context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
    }
}