小编Gan*_*esh的帖子

当在Recycler Adapter中调用getItemCount和getItemViewType方法时

我在stackoverflow中看到了类似的问题,但他们没有给出我的问题的明确答案.在阅读完整的问题之前,请勿将其标记为重复.我看到了这个链接,也是这个.感谢您花时间阅读本文.

我在源代码下面给出了三个问题,请仔细看看.

我会简单的.我试图在Recycler Adapter中使用两个 ViewHolder,我将在ViewPager中使用TabLayout.两个View Holder都有不同的 Xml和不同的元素(即textview,imageview等......)但是它内部有几个混乱.

我实现了我的RecyclerView适配器类,如下所示

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 


    public class MainViewHolder extends  RecyclerView.ViewHolder {
       public MainViewHolder(View v) {
        super(v);
       }


    class ViewHolder0 extends MainViewHolder { 
        ... 
    } 

    class ViewHolder2 extends MainViewHolder { 
        ... 
    } 

    @Override 
    public int getItemViewType(int position) {
        /**** I don't know where and when this method will be called and what will be the value present in the variable …
Run Code Online (Sandbox Code Playgroud)

android adapter android-recyclerview

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

将数据从 NextJS 中的上一页传递到 getServerSideProps

我正在使用 NextJS 开发一个类似电子商务的网站。

我将在页面中获取并显示产品列表/products。单击任何产品后,我将导航到/details/[productId],然后按如下方式获取这些产品详细信息。

// In /details/[productId].js file

export async function getServerSideProps({params}) {
    const res = await fetch(`https:my-api-url/api/products/${params.productId}`)
    const product = await res.json()
    return {
        props: {
            product
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

直到这一步一切看起来都很好。但我想减少数据库读取次数,因此detail我计划使用在上一页 ( /products) 中获取的数据,其中包含有关产品的信息,而不是在页面中再次获取产品详细信息。因此,我需要一种方法将这些产品对象传递到下一个屏幕/details/[productId]的 getServerSideProps (以实现用于 SEO 目的的 SSR)。

解决方法

我目前拥有的一种解决方案是stringify产品 json 并通过查询参数传递它,然后将其返回到getServerSideProps({params, query}). 但它只是在浏览器中向我的网址发送垃圾邮件,这看起来一点也不好看。

期待

是否有其他方法将数据传递到getServerSideProps函数中,以便它将利用数据在服务器本身中生成整个页面。请指导我克服这个问题。任何帮助,将不胜感激。

提前致谢.. (:

server-side-rendering next.js

11
推荐指数
1
解决办法
4610
查看次数

Android 权限 BIND_NOTIFICATION_LISTENER_SERVICE 不起作用

我在 React Native Application 工作。我正在努力在 Android 中使用Notification Services& BIND_NOTIFICATION_LISTENER_SERVICE。我正在尝试使用NotificationListenerService.

我正在使用一加 5T (Android Oreo)进行调试。

我见过很多重复的问题,我尝试了从这些问题中得到的以下解决方案。

1.重启手机(听起来很傻,但不起作用)

2.重新安装/重新构建应用程序

  1. 重命名 NotificationListenerService 类文件并运行等..

我一直面临的问题,

1.在“通知访问”设置中看不到我的应用程序。

2.onCreate / onNotificationPosted 当我收到任何通知时不会被调用

3.使用下面的代码检查我的应用程序是否具有通知权限,它返回“false”(显然,这是我的问题)

ComponentName cn = new ComponentName(getReactApplicationContext(), NotificationListener.class);
String flat = Settings.Secure.getString(getReactApplicationContext()
                   .getContentResolver(), "enabled_notification_listeners");
final boolean hasPermission = flat != null && flat.contains(cn.flattenToString());
// hasPermission - false
Run Code Online (Sandbox Code Playgroud)

由于BIND_NOTIFICATION_LISTENER_SERVICE未列出Dangerous permissions列表,我认为在 Manifest 中定义它(下面给出了源供您参考)就足够了,而不是询问运行时许可。

我遵循了教程并参考了其他教程。我不知道我哪里做错了。一切看起来都很完美。思索了一整天之后,我想我会请求你的帮助。

在下面找到我的源代码。

感谢您的时间和耐心。(:

我的来源

AndroidManifest.xml

      <service
            android:name=".NotificationListener"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
            <intent-filter> …
Run Code Online (Sandbox Code Playgroud)

android android-permissions

6
推荐指数
1
解决办法
2371
查看次数

KeyboardView无法实例化

我正在创建安卓键盘看到这个教程.我在这里和其他网站上看到了类似的问题,但我没有得到解决方案.

我正在尝试将KeyboardView实现到我的xml中.但它显示了一些渲染问题和例外 这里是我的Android Studio的快照

快照

我是否需要实现任何或某些gradle 依赖项

例外细节

java.lang.UnsupportedOperationException: Unsupported Service: audio
    at com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:463)
    at android.inputmethodservice.KeyboardView.<init>(KeyboardView.java:379)
    at android.inputmethodservice.KeyboardView.<init>(KeyboardView.java:283)
    at android.inputmethodservice.KeyboardView.<init>(KeyboardView.java:279)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:437)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:154)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:93)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:190)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:400)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:511)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:499)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:499)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:611)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:608)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:363)
    at …
Run Code Online (Sandbox Code Playgroud)

android rendering exception android-softkeyboard

5
推荐指数
0
解决办法
132
查看次数

使用 [innerHtml] 显示 html 时,bypassSecurityTrustHtml 禁用锚标记

我正在使用 Angular 10。我有一个场景来获取 html 字符串(富文本编辑器返回的值)并将其显示在我的应用程序中(使用innerHtml)。我将获得各种样式,例如背景颜色、字体颜色、突出显示文本、超链接等。

我正在bypassSecurityTrustHtml通过管道使用(代码如下),以便<styles>考虑标签。

// sanitizeHtml.pipe.ts

@Pipe({ name: 'keepHtml', pure: false })
export class SanitizeHtmlPipe implements PipeTransform {
  constructor(private sanitizer: DomSanitizer) {
  }

  transform(content) {
    return this.sanitizer.bypassSecurityTrustHtml(content);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当我获得超链接文本时<a href="http://www.someurl.com> click here </a>,这些锚链接不起作用。因此,当我单击该链接时,它不会打开href链接。

我见过像使用bypassSecurityTrustResourceUrl. 但我不能使用它,因为我无法单独从 html 内容中解析 url。

我还尝试使用其他 SO 问题中建议的如下功能,但它也没有帮助..

[innerHtml]="myHtmlContent | keepHtml | keepUrl"

[innerHtml]="myHtmlContent | keepUrl | keepHtml" // tried to reorder the pipe still didn't work

有没有办法在使用bypassSecurityTrustHtml 函数时使锚标记的href 链接正常工作?

谢谢你的时间。

angular angular-dom-sanitizer

5
推荐指数
1
解决办法
2708
查看次数

在按钮单击中执行AsyncTask而不会出现崩溃或异常

我看到很多这些问题的遗嘱(这里,这里,这里这里),但我没有得到解决我的问题.

这是我的应用程序的想法

URL中获取内容并在每次单击按钮时使用textview显示它.

(URL内容将为每次刷新随机生成不同的文本)


是我的应用程序的旧代码完美地工作但StackOverflow人员建议我使用AsyncTask

我在doInBackground()方法中指定了获取URL内容操作,并在onCreate的 Button Click Event中调用了new myAsyncTask.execute().

它只适用于第一次点击,然后我的应用程序崩溃了.它说AsyncTask应该只调用一次.但我希望我的TextView在每个按钮点击事件上更新.


那么,我现在应该怎么做

我是否要取消之前的AsyncTask并调用新的(或)我想为AsyncTask初始化新对象并再次调用它(这是最糟糕的方法)

如何使用AsyncTask或任何Alternate在我的应用程序中实现我的想法?

这是我的代码:

public class MainActivity extends AppCompatActivity {

    TextView resultView;String TAG="MainActivity kbt";
    SmoothProgressBar mProgressBar;
    Context context;
    MyAsyncTask myAsyncTask;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      //  StrictMode.enableDefaults();  //Used to executes URL connection on MainThread without getting Exception
        setContentView(R.layout.activity_main); …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

0
推荐指数
1
解决办法
5354
查看次数