나는 iistview가 있고 모바일에서 모든 시뮬레이션 메시지를 자동으로 필터링 한 다음 클릭을 통해 목록보기의 항목을 강조 표시하고 작동하지만 문제는 강조 표시된 항목이 모두 사라진 새 메시지가 있을 때입니다. 강조 표시된 항목을 유지하는 해결책이 있습니까? 새 메시지가 도착하면 항목? 다음 코드를 사용합니다. 응답해 주셔서 감사합니다.
레이아웃 : activity_main.xml
<ListView
android:id="@+id/textlistview"
android:layout_width="match_parent"
android:choiceMode="multipleChoice"
android:listSelector="@drawable/default_color"
android:layout_height="match_parent" />
방송 수신기 : SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(intent.getAction().equalsIgnoreCase("android.provider.Telephony.SMS_RECEIVED")) {
if (bundle != null) {
Object[] sms = (Object[]) bundle.get(SMS_BUNDLE);
String smsMsg = "";
SmsMessage smsMessage;
for (int i = 0; i < sms.length; i++) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
String format = bundle.getString("format");
smsMessage = SmsMessage.createFromPdu((byte[]) sms[i], format);
}
else {
smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
}
String msgBody = smsMessage.getMessageBody().toString();
smsMsg +=msgBody;
}
text_message inst = text_message.Instance();
inst.receive_data(smsMsg);
}
}
}}
MainActivity : text_message.java
public void receive_data (final String smsMsg) {
arrayAdapter = new ArrayAdapter(this,R.layout.list_item, list_items);
text_listview.setAdapter(arrayAdapter);
arrayAdapter.add(smsMsg);
arrayAdapter.notifyDataSetChanged();
}
필터 메시지 : text_message.java
public void refreshInbox(){
arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list_items);
ContentResolver cResolver = getContentResolver();
Cursor smsInboxCursor = cResolver.query(Uri.parse("content://sms/inbox"),null,null,null,null);
int indexBody = smsInboxCursor.getColumnIndex("body");
if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
do{
str = smsInboxCursor.getString(indexBody) ;
arrayAdapter.add(str);
}while (smsInboxCursor.moveToNext());
}