当前位置: 首页 > 知识库问答 >
问题:

显示由此产生的数据现在Pubnub在回收视图android

缪嘉志
2023-03-14

我在开始活动时调用此方法。我希望它显示在RecycleView这是我的代码并给我异常

公共类FirstFragment扩展了片段{

//private
String[] username = {"joe", "mido", "star", "fawzy", "mohsen"};
private RecyclerView recyclerView;
TextView textView;
ProgressDialog dialog;
FirstpageAdapter adapter;
View layout;
private final Handler myHandler = new Handler();
List<String> ids = new ArrayList<>();
private final static String TAG = "FIRST_FRAGMENT";
ListView listView;
Runnable updateRunnable;

public FirstFragment() {
    // Required empty public constructor
}

public List<String> getData() {
    List<String> data = new ArrayList<>();
    for (int i = 0; i < username.length; i++) {
        data.add(username[i]);
    }
    return data;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    //new MyTask().execute();
    View layout = inflater.inflate(R.layout.fragment_first, container, false);
    recyclerView=(RecyclerView)layout.findViewById(R.id.firstList);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    PubNubService.herNow(new Callback() {
        public void successCallback(String channel, Object message) {
            try {
                JSONObject object = new JSONObject(message.toString());
                JSONArray jsonArray = object.getJSONArray("uuids");
                for (int i = 0; i < jsonArray.length(); i++) {
                    ids.add(jsonArray.getString(i));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            Log.e(TAG, ids.size() + "");
            Log.e(TAG, message.toString());

                    adapter = new FirstpageAdapter(getActivity(), ids);
            recyclerView.setAdapter(adapter);

        }

        @Override
        public void errorCallback(String s, PubnubError pubnubError) {
            Log.e(TAG, "error Callback" + pubnubError.getErrorString());
        }
    });

    return layout;
}

}

例外

08-01 14:16:06.903 12365-12490/com。sprintone E/AndroidRuntime﹕ 致命异常:Non-Subscribe-Manager-1384510668-5进程:com。sprintone,PID:12365Android。看法ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图。在Android。看法ViewRootImpl。android上的checkThread(ViewRootImpl.java:6024)。看法ViewRootImpl。android上的requestLayout(ViewRootImpl.java:820)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。支持v4.widget。抽屉布局。android上的requestLayout(DrawerLayout.java:979)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。看法看法android上的requestLayout(View.java:16431)。支持v7.widget。回收视图。android上的requestLayout(RecyclerView.java:2245)。支持v7.widget。回收视图。com上的setAdapter(RecyclerView.java:564)。sprintone。用户界面。碎片FirstFragment 1美元。com上的successCallback(FirstFragment.java:101)。pubnub。应用程序编程接口。PubnubCore。在com上调用Callback(未知源)。pubnub。应用程序编程接口。PubnubCore。在com上调用Callback(未知源)。pubnub。应用程序编程接口。PubnubCore 11美元。com上的HandlerResponse(未知来源)。pubnub。应用程序编程接口。非认购者。com上的进程(未知源)。pubnub。应用程序编程接口。工人在java上运行(未知源)。lang.Thread。运行(Thread.java:841)

共有1个答案

宇文修筠
2023-03-14

如本文所述,只有创建视图层次的原始线程才能接触其视图

无法从主线程外部访问用户界面元素尝试使用AsyncTask

或RunOnUiThread

显然,PubNub回调是在后台线程上工作的,因为在android中,你无法在主线程上执行从远程服务器获取数据之类的操作,以避免请求失败导致应用程序崩溃,你尝试从PubNub回调访问RecucleView,最好在PubNub回调中获取数据,然后在回调之外的视图中设置它

或者,当pubnub回调在这里准备好时,您可以委托从中获取日期一些有用的链接link1
link2

 类似资料:
  • 我正试图添加数据在我的回收视图从火炉。我有带名字的文件(级别级别编号)但没有显示我的活动这是代码: 主要活动水平: 公共类级别活动扩展AppCompat活动{ } 水平调整器 公共类级别适配器扩展了RecyclerView。适配器 }

  • 我刚开始在firebase工作。我设法上传了文本和图像,但是,我无法检索要显示在回收器视图中的图像,只能检索文本。我用的是毕加索依赖。我已经包括了我的主要活动。java类,该类负责显示从问题“我的适配器”中的firebase检索的回收器视图项。java类和模型类。我相信,在我将图像URI上载到firebase存储时,我可能犯了没有存储图像URI的错误,因此适配器无法检索图像位置。我想这可能是因为我

  • 我需要制作一个电子商务应用程序类型的屏幕,具有多个viewpager和recycler视图。 我实现了它,但我的1/2视图寻呼机在回收器视图中可见,一旦我旋转设备,我的第一个视图寻呼机也会消失。 我的活动: 我的视图寻呼机片段: 我的回收器视图的主适配器: 我的视图寻呼机适配器: 我的水平回收器视图适配器: 主要活动布局: 水平滚动布局: 查看寻呼机布局: 根据我的JSON数据,在recycler

  • 当我按下后退按钮时,这个ShoppingActivity会被破坏,当我再次访问该activity时,我发现我的回收器视图项目被替换了两次。我该如何解决这个问题? ShoppingActivity.java这里编写的所有代码和volley类也在这里调用,当我按下后退键并再次访问该活动时,我发现我的回收器视图项被替换了 @override protected void onCreate(Bundle

  • 我试图通过使用RecyclerView显示firebase数据。 检索数据很好,我可以在logcat中检查。 有时recyclerview会显示数据,但通常什么也不显示。 当recycleview显示数据时,它很好地反射了firebase数据。 谁能告诉我问题出在哪里??我的xml代码有错误吗? Java电码 适配器类代码 xml代码的一部分

  • 我正在制作一个应用程序,其中有回收器视图。但我无法在我的应用程序中看到回收器视图。当我检查Logcat时,它显示'e/recyclerview:No adapter attached;正在跳过布局‘。为什么会发生这种情况,我该如何修复? 我的主要活动代码: 我的适配器(PostAdapter.java)类代码: