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