Я пытаюсь изменить данные фрагмента, когда появляется push-уведомление, и я адаптирую свой ListView всякий раз, когда получаю push-уведомление, но мой список не меняется и его изменения меняются, когда я перехожу к другому фрагменту, а затем возвращаюсь к этомуПохоже, что приложение использует кеш для xml, и его нельзя изменить динамически и в режиме реального времени.Кто-нибудь знает, как я могу это исправить?Любая помощь будет высоко ценится.
это моя категорияFragment.java
public class categoryFragment extends Fragment{
ArrayList<HashMap<String,String>> contact=new ArrayList<>();
public static final String ARG_OBJECT = "object";
private String TAG = DemoObjectFragment.class.getSimpleName();
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
Bundle args = getArguments();
ArrayList<HashMap<String,String>> arrayList= (ArrayList<HashMap<String,String>>)getArguments().getSerializable("key");
contact.clear();
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).get("assetId").equals(MainActivity.arrayListSpinner.get(args.getInt(ARG_OBJECT)).getIdAsset()+"")
&&!arrayList.get(i).get("sourceName").equals("null")){
contact.add(arrayList.get(i));
}
}
View header = getLayoutInflater().inflate(R.layout.header_price_list, null);
View rootView = inflater.inflate(R.layout.coin, container, false);
ListView lv = rootView.findViewById(R.id.list1);
lv.setAdapter(null);
lv.addHeaderView(header);
ListAdapter adapter = new SimpleAdapter(getActivity()
, contact,
R.layout.list_item, new String[]{"sourceName", "priceCurrency"},
new int[]{R.id.sourceName, R.id.priceCurrency});
lv.setAdapter(adapter);
return rootView;
}
}
это моя страницаadapter.java
public class categoryPagerAdapter extends FragmentStatePagerAdapter {
public categoryPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = new categoryFragment();
Bundle args = new Bundle();
// Our object is just an integer :-P
if (i==MainActivity.arrayListSpinner.size()){
i=i-1;
}
args.putInt(categoryFragment.ARG_OBJECT, i);
args.putSerializable("key",MainActivity.contactList);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 100;
}
@Override
public CharSequence getPageTitle(int position) {
return "OBJECT " + (position + 1);
}
}
это оповещение Class.java
public class PushReceiver extends BefrestPushReceiver {
String notify = "";
private String TAG = PushReceiver.class.getSimpleName();
@Override
public void onPushReceived(Context context, BefrestMessage[] messages) {
JSONObject jsonObj = null;
JSONArray contacts = null;
try {
jsonObj = new JSONObject(messages[0].getData());
} catch (JSONException e) {
e.printStackTrace();
}
try {
contacts = jsonObj.getJSONArray("messages");
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
notify += c.getString("name") + "\t";
notify += c.getString("type") + "\t";
notify += c.getString("price") + "\t";
if (c.getString("status").equals("1")) {
notify += "\u25b2 \t";
} else {
notify += "\u25bc \t";
}
notify += "\n";
for (int j = 0; j < MainActivity.contactList.size(); j++) {
if (MainActivity.contactList.get(j).get("sourceName").equals(c.getString("name"))
&& MainActivity.contactList.get(j).get("assetName").equals(c.getString("type"))) {
MainActivity.contactList.get(j).put("priceCurrency", c.getString("price"));
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
// looping through All Contacts
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setStyle(new NotificationCompat.BigTextStyle().bigText(notify))
.setSmallIcon(R.mipmap.ic_launcher) //replace with your app icon if it is not correct
.setTicker("پیام از بفرست!")
.setAutoCancel(true);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
}
}