小编emi*_*ius的帖子

没有适配器; 跳过布局错误

我正在开发Android应用程序,必须显示存储在SD卡中的所有图像.我成功地做到了,除了我在切换到横向模式时出现奇怪的行为(实际上,我在网格中看不到任何内容).

在logcat中,我收到以下消息:RecyclerView:没有连接适配器; 跳过布局

是的,我正在使用RecyclerView,这只发生在横向,当我再次旋转回肖像时,片段被保留,我可以再次看到网格中的每个位图.

现在,有谁知道为什么会发生这种情况?以下是我将我的适配器设置为recyclerView(在片段内)的方法:

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    if (cursor.moveToFirst()) {
        adapter = new ImageAdapter(getActivity(), cursor, imageManager);
        imagesGrid.setAdapter(adapter);
    }
}
Run Code Online (Sandbox Code Playgroud)

哦,顺便说一下,我正在使用RecyclerView的默认GridLayoutManager.

android adapter android-fragments android-recyclerview

7
推荐指数
0
解决办法
4165
查看次数

Android HTML Jsoup解析速度

这是交易.在我的Android应用程序中,我正在使用Jsoup进行一些网络抓取.现在它工作正常,但它太慢了.我在我的代码中做的是:

  1. 在Jsoup中通过POST方法登录页面;
  2. 获取cookie;
  3. 通过重用cookie我将经历6个页面(POST和GET)并抓取它们(主要是表格和许多行.我的意思是很多......所以,真的很多foreach循环);
  4. 将所有必需的数据写入SQLiteDatabase;

现在问题是它速度很快.我的意思是,在按下登录按钮后,在应用程序的登录界面中,用户必须在3G中等待10秒,在WiFi中等待8-10秒(取决于WiFi速度).当他试图检查数据更新时,它会执行相同的算法+比较SQLiteDatabase表数据.

那么,有没有其他方法来做这个HTML解析 - 在android中刮掉东西以使其更快?PS我遗憾地无法访问数据库.

编辑:

既然你问过我正在抓取的内容,这里是你可以在不登录的情况下访问的几个页面的一个例子(与其他人相比,这不是一个很大的表):https://medeine.vgtu.lt/programos/ programa.jsp?sid = F&fak = 5&prog = 87&rus = U&klb = en.

现在,对于代码......我真的不能给你完整的代码,但这里是我如何得到表格的每个单元格的例子:

document = Jsoup.connect(getContext().getString(R.string.url))
                    .cookie("JSESSIONID", cookie)
                    .get();

            Element table = document.select("table.duomenys").first();
            if (table != null) {
                databaseHandler.openDatabase();
                databaseHandler.getDatabase().beginTransaction();
                try {
                    for (Element row : table.select("tr.n, tr.l") {
                        Elements columns = row.select("td");
                        addItem(columns, DatabaseHandler.getTableName());
                    }
                    databaseHandler.getDatabase().setTransactionSuccessful();
                } finally {
                    databaseHandler.getDatabase().endTransaction();
                }
                databaseHandler.closeDatabase();
            }
Run Code Online (Sandbox Code Playgroud)

这是addItem()方法示例:

private void addItem(Elements columns, String tableName) {
    databaseHandler.addItem(new Item(
            columns.get(0).text(),
            columns.get(1).text(), …
Run Code Online (Sandbox Code Playgroud)

performance android web-scraping jsoup

3
推荐指数
1
解决办法
3797
查看次数

Android:如何以编程方式登录网站并从中检索数据?

好的,大家好,所以我最近开发的android应用程序将用户的ID和PASSWORD保存到SharedPreferences.现在,当用户第二次启动应用程序时,他将通过listView中的一些选项直接重定向到MainActivity.而现在我头疼得厉害,这让我变得非常疯狂.我无法登录网站并将数据提取到手机.我尝试过使用Http(s)UrlConnection,HttpClient,但它似乎对我不起作用.我从POST方法得到的只是登录页面的源代码.

现在,有登录页面:https://medeine.vgtu.lt/studentams/login.jsp?klb = en

和我的目标页面:https://medeine.vgtu.lt/studentams/pask_stud.jsp < - 我需要从那里获取数据

你有任何想法或提示/方法/指南/任何如何做到这一点?

java post android httpclient httpurlconnection

2
推荐指数
1
解决办法
1万
查看次数