【发布时间】:2018-03-22 12:28:57
【问题描述】:
我有一个包含一个包含 recyclerview 片段的活动,当我以纵向查看应用程序时,它工作正常,但是当我转向横向数据时,数据翻了一番,这意味着当我滑动它时我有一个 recyclerview,我在它下面看到另一个。
活动代码
public class DailyAzkaar extends AppCompatActivity {
Toolbar toolbar;
SharedPreferences settings;
String locale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_azkaar);
settings = getSharedPreferences("MyPrefs", 0);
locale = settings.getString("locale", "en-US");
Locale.setDefault(Locale.forLanguageTag(locale));
Configuration config = new Configuration();
config.setLocale(Locale.forLanguageTag(locale));
//config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
DailyAzkaarFragment dailyAzkaarFragment=new DailyAzkaarFragment();
fragmentTransaction.add(R.id.fragment_container,dailyAzkaarFragment);
fragmentTransaction.commit();
}
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this,"onResume",Toast.LENGTH_SHORT).show();
}
}
这是片段的代码
public class DailyAzkaarFragment extends Fragment implements ItemClickListener {
ArrayList<AzkarForm> list;
RecyclerView rv;
int activity;
SharedPreferences settings;
Boolean[] favourite=new Boolean[28];
Boolean[] favourite_evening=new Boolean[27];
RecyclerView.LayoutManager layoutManager;
RecyclerFavouriteAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.daily_azkaar_fragment,container, false);
rv = (RecyclerView) view.findViewById(R.id.recyclerviewcard);
activity = getActivity().getIntent().getIntExtra("activity", 3);
AzkaarData azkaarData=new AzkaarData(getActivity());
settings = getActivity().getSharedPreferences("MyPrefs", 0);
if (settings.getBoolean("is_first_time", true)) {
//the app is being launched for first time, do something
Log.d("TAG", "First time");
settings.edit().putBoolean("is_first_time", false).commit();
storeArray(favourite,"fav",false,getActivity());
storeArray(favourite_evening,"fav_evening",false,getActivity());
} else {
//second time launch..
favourite=loadArray("fav",getActivity());
favourite_evening=loadArray("fav_evening",getActivity());
for(int i=0;i<favourite.length;i++)
Log.d("msg ",String.valueOf(favourite[i]));
}
if(activity == 1)
list=azkaarData.getArrayListData(favourite,activity);
else
list=azkaarData.getArrayListData(favourite_evening,activity);
layoutManager=new LinearLayoutManager(getActivity());
rv.setLayoutManager(layoutManager);
rv.setHasFixedSize(true);
adapter=new RecyclerFavouriteAdapter(list,activity,getActivity());
rv.setAdapter(adapter);
adapter.setClickListener(this);
return view;
}
public boolean storeArray(Boolean[] array, String arrayName,boolean b, Context mContext) {
settings = mContext.getSharedPreferences("MyPrefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++) {
editor.putBoolean(arrayName + "_" + i, b);
array[i]=b;
}
return editor.commit();
}
public Boolean[] loadArray(String arrayName, Context mContext) {
settings = mContext.getSharedPreferences("MyPrefs", 0);
int size = settings.getInt(arrayName + "_size", 0);
Boolean array[] = new Boolean[size];
for(int i=0;i<size;i++)
array[i] = settings.getBoolean(arrayName + "_" + i, true);
return array;
}
@Override
public void onClick(View view, int position) {
if(view.getId()==R.id.cardview) {
//AzkarForm azkarForm = list.get(p);
Intent intent = new Intent(getActivity(), DetailsActivity.class);
intent.putExtra("position", position);
if(activity == 1) intent.putExtra("activity", 3);
else intent.putExtra("activity", 4);
this.startActivity(intent);
}
}
}
【问题讨论】:
-
请把你的代码过去。
-
我为活动和片段添加了代码
标签: android android-recyclerview fragment landscape