我已经从BaseAdapter扩展了我自己的自定义适配器以显示listview等等......
我希望它支持单选和多选,所以它必须有稳定的ID.我已经检查过ADAPTER.hasStableIds()
,结果是假的.
我已经克服了这种方法,试图在没有运气的情况下获得稳定的id.
public long getItemId(int position) {
return (long) getItem(position).hashCode();
}
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?谢谢!
我想保留这些方法:
setListShown(true);
setListShownNoAnimation(true);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
Run Code Online (Sandbox Code Playgroud)
要Fragment
使用自定义样式布局来扩充,以前的方法无法使用,并显示此异常:
07-30 20:17:46.937: E/AndroidRuntime(1374): Caused by: java.lang.IllegalStateException: Can't be used with a custom content view
07-30 20:17:46.937: E/AndroidRuntime(1374): at android.support.v4.app.ListFragment.setListShown(ListFragment.java:282)
07-30 20:17:46.937: E/AndroidRuntime(1374): at android.support.v4.app.ListFragment.setListShown(ListFragment.java:258)
Run Code Online (Sandbox Code Playgroud)
那么,可能的解决方案是什么?
编辑:
在Fragment
使用装载机来填充它ListView
从一个数据库.所以这就是我想保留这些方法的原因,这里需要它们:
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
}
}
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是根据ListFragment
源代码创建自己的代码,并将进度窗口小部件添加到布局中以显示相同的效果.到现在为止,我会删除这些行,因为我被告知.如果我进行修改,我会将其粘贴到此处.
我在客户端中使用 React 和 fetch 向Discogs API发出请求。在此 API 中,每分钟最多有 60 个请求的限制。为了管理此Discogs,在响应标头中添加自定义值,例如“剩余请求”、“已使用的请求”或“最大允许请求”,但由于cors,这些标头无法读取。
因此,我决定为此 API 创建一个请求包装器,从中我可以:
我已经成功地使用单例对象完成了一个工作示例,其中作业排队并通过 setTimeout
函数延迟请求的调用进行管理。
当使用简单的回调时,这对我有用,但我不知道如何向 React 组件返回值以及如何使用 Promises 而不是回调(获取)来实现它。
我也不知道如何取消超时或来自反应组件的获取请求。
你可以查看这个例子,我已经简化了它。我知道这也许不是最好的方法,或者这段代码很糟糕。这就是为什么任何有关它的帮助或指导将非常感激。
我使用 Next.js 和next-connect来处理中间件。
但是当我在内部使用多个中间件时,我在尝试处理错误时遇到了问题getServerSideProps
。
这是我在 getServerSideProps 中的代码,我刚刚使用几个中间件创建了一个处理程序,然后所有中间件都运行,身份验证成功,用户数据应该传递到响应,但如果有任何失败,应该捕获错误并返回页面的重定向'/login'
。
import nextConnect from 'next-connect';
import { openDBConnection, retrieveUserInfo } from '@/middlewares/database';
import { verifySessionCookie } from '@/middlewares/firebaseSession';
...
export const getServerSideProps = async ({ req, res }) => {
const handler = nextConnect()
.use(verifySessionCookie)
.use(openDBConnection)
.use(retrieveUserInfo);
try {
await handler.run(req, res);
return {
props: {
user: req.user,
},
};
} catch (e) {
console.log(e);
return {
redirect: {
destination: '/login',
permanent: false,
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我没有在任何中间件中定义任何 …
我正在尝试一个简单的方法,删除文件的上层目录,如果它们是空的,直到它到达基本目录,但我不能使它工作.
它删除文件及其父目录,但是,它的下一个父项在它抛出时不会被删除DirectoryNotEmptyException
.它确实是空的,因为只有一个子目录,并且它在上一次迭代中被删除.
因此,文件被删除,其父项被删除,并在那里停止,不再删除上层目录.
编辑:(修改后的代码)
似乎延迟删除目录,因此在下一次检查目录的空白状态时,前一个目录尚未删除.所以我添加了一个while循环来检查,直到该目录不存在.我不知道这是不是一个坏技术,但它适合我的需要.
public static void removeFileAndParentsIfEmpty(Path path) throws IOException {
if(path == null || path.endsWith(FilesPath.BILLS_DIRECTORY)) {
return;
}
if (Files.isRegularFile(path)){
Files.deleteIfExists(path);
} else if (Files.isDirectory(path)){
if(path.toFile().list().length == 0){
Files.delete(path);
while(Files.exists(path));
}else{
return;
}
} else {
return;
}
removeFileAndParentsIfEmpty(path.getParent());
}
Run Code Online (Sandbox Code Playgroud)
如果有人能提供更好的解决方案,那么这个问题仍然需要批准.谢谢.
我在任何地方都进行了搜索和研究,找到了一个没有结果的答案.所以我再次寻求帮助.
我想在桌面java swing应用程序中显示格式化文本.该文本将在一些变量对象的基础上编程生成,并且不可编辑.
我不知道是否最好使用JTextPane或JEditorPane,或者是什么.问题是我找不到任何解释如何使用它们的手册或教程.我是否必须创建HTMLDocument才能插入文本?我该如何创建它?...
在这种情况下,是显示文本的正确方法吗?或者我可以使用表格或标签或类似的东西.
我需要你的一些建议,如果有一些地方我可以学习如何去做,请告诉我.
android ×2
java ×2
listview ×2
reactjs ×2
adapter ×1
discogs-api ×1
java-7 ×1
java-io ×1
javascript ×1
jeditorpane ×1
jtextpane ×1
next-connect ×1
next.js ×1
swing ×1
text ×1