Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用选项卡视图片段绑定RecyclerView中的数据_Android_Android Fragments_Tabs_Android Recyclerview - Fatal编程技术网

Android 如何使用选项卡视图片段绑定RecyclerView中的数据

Android 如何使用选项卡视图片段绑定RecyclerView中的数据,android,android-fragments,tabs,android-recyclerview,Android,Android Fragments,Tabs,Android Recyclerview,我的应用程序中有3个选项卡。假设第一个是A、B和C。我的MainActivity声明并设置了一个选项卡侦听器,我的每个选项卡又有3个活动。我的问题是,在选项卡A中,我用截击加载数据。在选项卡B中,我也加载了不同的数据。但有时我的RecyclerView,数据很奇怪(选项卡A中显示的选项卡B中的数据或选项卡B成功加载数据,但选项卡A没有显示任何内容)。我在每个活动选项卡中加载数据,如下面的代码所示。我做错了吗?还是应该在MainActivity中加载所有数据?任何回答都会对我有帮助。谢谢你 @Ov

我的应用程序中有3个选项卡。假设第一个是A、B和C。我的MainActivity声明并设置了一个选项卡侦听器,我的每个选项卡又有3个活动。我的问题是,在选项卡A中,我用截击加载数据。在选项卡B中,我也加载了不同的数据。但有时我的RecyclerView,数据很奇怪(选项卡A中显示的选项卡B中的数据或选项卡B成功加载数据,但选项卡A没有显示任何内容)。我在每个活动选项卡中加载数据,如下面的代码所示。我做错了吗?还是应该在MainActivity中加载所有数据?任何回答都会对我有帮助。谢谢你

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.popular_tab, container, false);


    searchViewPopular = (SearchView) rootView.findViewById(R.id.searchView_Popular);

    popularRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView_Popular);
    popularRecyclerView.setHasFixedSize(true);
    popularaLinearLayoutManager = new LinearLayoutManager(getContext());
    popularGenericAdapter = new GenericAdapter(popularRecyclerView);

    popularRecyclerView.setLayoutManager(popularaLinearLayoutManager);
    popularRecyclerView.setAdapter(popularGenericAdapter);

    popularData = new JSONArray();
    filteredPopularData = new JSONArray();

    filteredPopularData = ((GlobalVariable)this.getActivity().getApplication()).getPopularData();

    loadData();

    listener = new GenericAdapter.OnRecyclerViewListener() {
        @Override
        public void OnRecyclerViewItemClicked(RecyclerView recyclerView, int position) {

        }

        @Override
        public void OnRecyclerViewItemBind(RecyclerView recyclerView, GenericAdapter.GenericHolder view, int position) {
            try {
                currPopularData = filteredPopularData.getJSONObject(position);

                view.textViewTitle.setText(currPopularData.getString("title"));
                view.textViewDesc.setText("Popularity       : " + currPopularData.getString("popularity"));
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

        @Override
        public int OnRecyclerViewItemCount(RecyclerView recyclerView) {
            return filteredPopularData.length();
        }
    };

    popularGenericAdapter.setOnRecyclerViewListener(listener);
    searchViewPopular.setOnQueryTextListener(searchListener);

    return rootView;
}

//  @Override
//  public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    //   super.onViewCreated(view, savedInstanceState);

    //  loadData();
//  }

SearchView.OnQueryTextListener searchListener = new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String searchText) {
        try {
            filteredPopularData = ProgramMethod.filterArray(popularData, "title", searchText, false);
            popularGenericAdapter.notifyDataSetChanged();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return false;
    }
};

    public void loadData() {
    final RequestQueue requestQueue;
    Network network = new BasicNetwork(new HurlStack());
    requestQueue = new RequestQueue(new NoCache(), network);
    requestQueue.start();

    final String urlAPIGenre = "https://api.themoviedb.org/3/movie/popular?api_key=8517f7eb51ca49a4558f33f8c832c1db";
    final String TAG = "";

    final JsonObjectRequest jsonGenre = new JsonObjectRequest
            (Request.Method.GET, urlAPIGenre, null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        popularData = response.getJSONArray("results");
                        filteredPopularData = popularData;

                        ((GlobalVariable)getActivity().getApplication()).setPopularData(filteredPopularData);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    System.out.println("filteredPopularData = " + response);
                    popularGenericAdapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                }
            });
    requestQueue.add(jsonGenre);
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.popular\u选项卡,容器,false);
SearchView Popular=(SearchView)rootView.findviewbyd(R.id.SearchView\u Popular);
PopularRecycleView=(RecycleView)rootView.findViewById(R.id.RecycleView\u Popular);
popularRecyclerView.setHasFixedSize(true);
PopularLinearLayoutManager=新的LinearLayoutManager(getContext());
PopularGenericaAdapter=新的通用适配器(popularRecyclerView);
设置布局管理器(PopularLinearLayoutManager);
PopularRecycleView.setAdapter(PopularGenericaAdapter);
popularData=new JSONArray();
filteredPopularData=new JSONArray();
filteredPopularData=((全局变量)this.getActivity().getApplication()).getPopularData();
loadData();
listener=新的GenericaAdapter.onRecycleServiceWLListener(){
@凌驾
已单击RecyclerViewItem上的公共无效(RecyclerView RecyclerView,int位置){
}
@凌驾
RecycleViewItemBind上的公共void(RecycleView RecycleView,GenericAdapter.GenericHolder视图,int位置){
试一试{
currPopularData=filteredPopularData.getJSONObject(位置);
view.textViewTitle.setText(currpoulardata.getString(“title”);
view.textViewDesc.setText(“流行度:+currpoppopularData.getString(“流行度”));
}捕获(JSONException e){
e、 printStackTrace();
}
}
@凌驾
公共int onRecycleWebItemCount(RecycleWebRecycleWebView){
返回filteredPopularData.length();
}
};
PopularGenericaAdapter.SetonRecycleServiceWListener(侦听器);
searchViewPopular.setOnQueryTextListener(searchListener);
返回rootView;
}
//@覆盖
//已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
//super.onViewCreated(视图,savedInstanceState);
//loadData();
//  }
SearchView.OnQueryTextListener searchListener=新建SearchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串搜索文本){
试一试{
filteredPopularData=ProgramMethod.filterArray(popularData,“title”,searchText,false);
popularGenericAdapter.notifyDataSetChanged();
}捕获(JSONException e){
e、 printStackTrace();
}
返回false;
}
};
公共void loadData(){
最终请求队列请求队列;
网络=新的基本网络(new HurlStack());
requestQueue=newRequestQueue(new NoCache(),网络);
requestQueue.start();
最后一个字符串urlAPIGenre=”https://api.themoviedb.org/3/movie/popular?api_key=8517f7eb51ca49a4558f33f8c832c1db";
最终字符串标记=”;
最终JsonObjectRequest jsonGenre=新JsonObjectRequest
(Request.Method.GET,urlAPIGenre,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
popularData=response.getJSONArray(“结果”);
filteredPopularData=popularData;
((全局变量)getActivity().getApplication()).setPopularData(filteredPopularData);
}捕获(JSONException e){
e、 printStackTrace();
}
System.out.println(“filteredPopularData=“+响应”);
popularGenericAdapter.notifyDataSetChanged();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(标记“Error:+Error.getMessage());
}
});
add(jsonGenre);
}
编辑:

这是我的账单


在第一个选项卡中,它应该是show Textview with text
Popularity
,但在第一次应用程序中打开它的always show
Top Rated
content

如果您使用viewPager,请尝试添加
viewPager.setOffscreenPageLimit(5)在MainActivity中。也许这可能是hep。这可能会阻止在选项卡之间来回滑动时再次加载数据。@ashwinmothill它不工作的屏幕截图可能会help@AshwinMothilal添加,请参见我的编辑