在不重新启动应用程序的情况下更改回收器视图内容



我正在创建这个应用程序,用户更改语言,它仅在我重新启动应用程序后发生,我可以做些什么来避免重新启动部分 您的帮助将非常有帮助

这是创建方法: 这是创建方法:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_class_room);
custom_relatives = findViewById(R.id.custom_relatives);
custom_relatives.setBackgroundColor(Functions.getBackColor());
recycler_view_bottom_teacher = findViewById(R.id.recycler_view_bottom_teacher);
myTeacherModelLists = new ArrayList<>();
model_tabs_teachers = new ArrayList<>();
String[] edu_forum = {"Edu Forum", "ฟอรั่มการศึกษา", "শিক্ষা আলোচনা"};
recyclerView = findViewById(R.id.recyclerView);
// change_language();
GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(), 3);
recyclerView.setLayoutManager(gridLayoutManager);

MyTeacherAdapter myTeacherAdapter = new MyTeacherAdapter(myTeacherModelLists, this);
//change_language();
if (EasyPreference.with(getApplicationContext(), PRE_KEY)
.getString(PRE_USER_LANGUAGE,PRE_LANGUAGE_ENGLISH).equalsIgnoreCase(PRE_LANGUAGE_ASSEMESS)) {

myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, Constant.classroom[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, Constant.news[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, Constant.announcement[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, Constant.school_diary[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, Constant.absent_report[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, Constant.examination[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, Constant.events[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, edu_forum[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, Constant.edu_forum[2]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, Constant.settings[2]));
myTeacherAdapter.notifyDataSetChanged();


} else if (EasyPreference.with(getApplicationContext(), PRE_KEY)
.getString(PRE_USER_LANGUAGE, PRE_LANGUAGE_ENGLISH).equalsIgnoreCase(PRE_LANGUAGE_THI)) {

myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, Constant.classroom[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, Constant.news[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, Constant.announcement[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, Constant.school_diary[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, Constant.absent_report[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, Constant.examination[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, Constant.events[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, edu_forum[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, Constant.edu_forum[1]));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, Constant.settings[1]));
myTeacherAdapter.notifyDataSetChanged();


} else {

myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, "Classroom"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, "Notice"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, "Announcement"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, "School Diary"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, "Absent report"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, "Examination"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, "Events"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, "Edu Forum"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, "Edu Bank"));
myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, "Settings"));
myTeacherAdapter.notifyDataSetChanged();

}

recyclerView.setAdapter(myTeacherAdapter);
//adapter.notifyDataSetChanged();


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.classroomabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.schooldiaryabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.noticeabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.absentreportabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.examinationabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.eventsabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.edubankabhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.edu_forum_latest_abhi));
model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.home));
Adapter_Tabs_Teacher adapter_tabs_teacher = new Adapter_Tabs_Teacher(model_tabs_teachers, this);
recycler_view_bottom_teacher.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
recycler_view_bottom_teacher.setAdapter(adapter_tabs_teacher);


imageSlider = (SliderLayout) findViewById(R.id.slider);
EasyPreference.with(this, PRE_KEY).addInt("currentTab", 0).save();
HashMap<String, Integer> url_maps = new HashMap<String, Integer>();
url_maps.put("Latest News", R.drawable.zedabhi);
url_maps.put("Click Here to Read More", R.drawable.newsmod);

HashMap<String, Integer> file_maps = new HashMap<String, Integer>();


for (String name : url_maps.keySet()) {
TextSliderView textSliderView = new TextSliderView(this);
// initialize a SliderLayout
textSliderView
.description(name)
.image(url_maps.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(this);

//add your extra information
textSliderView.bundle(new Bundle());
textSliderView.getBundle()
.putString("extra", name);

imageSlider.addSlider(textSliderView);
}

String teacherName = EasyPreference.with(this, PRE_KEY).getString(PRE_USER_NAME, "");
boolean shownWelcome = EasyPreference.with(this, PRE_KEY).getBoolean("shownWelcome", false);


if (!shownWelcome) {

AlertDialog.Builder alert = new AlertDialog.Builder(this);
final AlertDialog alertDialog = alert.create();
alertDialog.setMessage(getString(R.string.app_hello) + " " + teacherName + "," + "n" + getString(R.string.app_welcome) + " " + getString(R.string.app_name));
alertDialog.setMessage("Hello " + teacherName + "," + "nWelcome to " + getString(R.string.app_name));
alertDialog.setCanceledOnTouchOutside(true);
alertDialog.show();
EasyPreference.with(this, PRE_KEY).addBoolean("shownWelcome", true).save();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
alertDialog.dismiss();
}
}, 7000);


}

filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
connectReciever = new ConnectivityReciever();
registerReceiver(connectReciever, filter);


pref = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);


imageView = findViewById(R.id.imageView);


toolbarText = (TextView) findViewById(R.id.toolbarText);
//  mViewPager = findViewById(R.id.viewpager);
//    tabLayout = (TabLayout) findViewById(R.id.tab_layout);
setTabAdapter();


Animation animation = new AlphaAnimation(1, 0); //to change visibility from visible to invisible
animation.setDuration(500); //1 second duration for each animation cycle
animation.setInterpolator(new LinearInterpolator());
animation.setRepeatCount(Animation.INFINITE); //repeating indefinitely
animation.setRepeatMode(Animation.REVERSE); //animation will start from end point once ended.
// image_breaking_news.startAnimation(animation); //to start animation


String url_logo = EasyPreference.with(ClassRoomActivity.this, PRE_KEY).getString(MY_PREFS_SCHOOL_LOGO, "");

//Demo purpose

if (url_logo != null && (!url_logo.equalsIgnoreCase(""))) {
Picasso.with(ClassRoomActivity.this)
.load(url_logo)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.error(R.drawable.sz_logo)
.placeholder(R.drawable.loading_back)
.into(imageView);
} else {
Picasso.with(ClassRoomActivity.this)
.load(R.drawable.sz_logo)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.error(R.drawable.sz_logo)
.placeholder(R.drawable.loading_back)
.into(imageView);
}


}

如何修复它,以便不执行重新启动应用程序过程。谢谢

使用以下代码更改语言

if (context != null) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(language));
res.updateConfiguration(conf, dm);
}

它不会立即反映,因此要解决此问题,只需打开它应该反映的默认或启动器活动。

我认为diffUtils可以在这方面帮助你,看看Diff Utils

最新更新