Android fragments 当你点击一个项目,你想分割城市,但他不工作
单击某个项目时,我希望看到城市片段,但它不起作用。 它在导航菜单中起作用,但当您单击不起作用的项目时Android fragments 当你点击一个项目,你想分割城市,但他不工作,android-fragments,Android Fragments,单击某个项目时,我希望看到城市片段,但它不起作用。 它在导航菜单中起作用,但当您单击不起作用的项目时 public class CityFragment extends Fragment implements CityAdapter.OnOverViewClick { //Views private RelativeLayout rl; private RecyclerView mRecyclerView; private View mLoadingView;
public class CityFragment extends Fragment implements CityAdapter.OnOverViewClick {
//Views
private RelativeLayout rl;
private RecyclerView mRecyclerView;
private View mLoadingView;
private String cityString;
//List
private CityAdapter multipleItemAdapter;
private ViewTreeObserver.OnGlobalLayoutListener recyclerListener;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rl = (RelativeLayout) inflater.inflate(R.layout.fragment_entekhab_shahr, null);
setHasOptionsMenu(true);
mRecyclerView = (RecyclerView) rl.findViewById(R.id.rv_list);
final StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);
cityString = this.getArguments().getStringArray(MainActivity.FRAGMENT_DATA)[0];
recyclerListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Get the view width, and check if it could be valid
int viewWidth = mRecyclerView.getMeasuredWidth();
if (viewWidth <= 0) return;
//Remove the VTO
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
//Calculate and update the span
float cardViewWidth = getResources().getDimension(R.dimen.card_width_overview);
int newSpanCount = Math.max(1, (int) Math.floor(viewWidth / cardViewWidth));
mLayoutManager.setSpanCount(newSpanCount);
mLayoutManager.requestLayout();
}
};
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);
mLoadingView = rl.findViewById(R.id.loading_view);
//Load items
loadItems();
return rl;
}
public void loadItems() {
new CityParser(cityString, getActivity(), new CityParser.CallBack() {
@Override
public void categoriesLoaded(ArrayList < NavItem > result, boolean failed) {
if (failed) {
//If it failed; show an error if we're using a local file, or if we are online & using a remote overview.
if (!cityString.contains("http") || Helper.isOnlineShowDialog(getActivity()))
Toast.makeText(getActivity(), R.string.invalid_configuration, Toast.LENGTH_LONG).show();
return;
}
//Add all the new posts to the list and notify the adapter
multipleItemAdapter = new CityAdapter(result, getContext(), CityFragment.this);
mRecyclerView.setAdapter(multipleItemAdapter);
loadCompleted();
}
}).execute();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);
}
private void loadCompleted() {
//Hide the loading view if it isn't already hidden
if (mLoadingView.getVisibility() == View.VISIBLE)
mLoadingView.setVisibility(View.GONE);
}
@Override
public void onOverViewSelected(NavItem item) {
HolderActivity.startActivity(getActivity(), item.getFragment(), item.getData());
}
}
公共类CityFragment扩展片段实现CityAdapter.onOverview单击{
//观点
私人亲戚;
私人回收视图mRecyclerView;
私有视图mLoadingView;
私有字符串cityString;
//名单
私人城市适配器多路适配器;
private ViewTreeObserver.OnGlobalLayoutListener recyclerListener;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
rl=(RelativeLayout)充气器。充气(R.layout.fragment\u entekhab\u shahr,null);
设置选项菜单(真);
mRecyclerView=(RecyclerView)rl.findViewById(R.id.rv_列表);
最终StaggedGridLayoutManager mLayoutManager=新的StaggedGridLayoutManager(1,StaggedGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mllayoutmanager);
cityString=this.getArguments().getStringArray(MainActivity.FRAGMENT_数据)[0];
recyclerListener=new ViewTreeObserver.OnGlobalLayoutListener(){
@凌驾
公共图书馆{
//获取视图宽度,并检查它是否有效
int viewWidth=mRecyclerView.getMeasuredWidth();
if(viewWidth结果,布尔值失败){
如果(失败){
//如果失败;如果我们正在使用本地文件,或者如果我们在线&使用远程概览,则显示错误。
如果(!cityString.contains(“http”)| | Helper.isOnlineShowDialog(getActivity()))
Toast.makeText(getActivity(),R.string.invalid_配置,Toast.LENGTH_LONG.show();
返回;
}
//将所有新帖子添加到列表中并通知适配器
multipleItemAdapter=new CityAdapter(结果,getContext(),CityFragment.this);
mRecyclerView.setAdapter(multipleItemAdapter);
loadCompleted();
}
}).execute();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);
}
私有void loadCompleted(){
//如果加载视图尚未隐藏,则隐藏该视图
if(mLoadingView.getVisibility()==View.VISIBLE)
mLoadingView.setVisibility(View.GONE);
}
@凌驾
已选择概述上的公共无效项(NaviItem项){
HolderActivity.startActivity(getActivity(),item.getFragment(),item.getData());
}
}
这是我的活动@Override public boolean onOptionsItemSelected(MenuItem item){//Handle item选择开关(item.getItemId()){case R.id.favorites:HolderActivity.startActivity(THIS,CityFragment.class,null);返回true;case R.id.profile:HolderActivity.startActivity(this,profile_Fragment.class,null);返回true;默认值:返回super.onoptionItemSelected(item);}欢迎来到stackoverflow,请将此信息添加到您的问题中。我想补充的是,我处理了每个错误