小编Vas*_*nov的帖子

确定项目是否在RecyclerView上可见

我已经构建了一个基本界面,其中包含一个CardView内部列表RecyclerView.添加卡后,我需要知道它是否在屏幕上可见.

我试图通过使用布局管理器的findLastVisibleItemPosition()方法获得这个,但它似乎返回一个项目少于预期的结果.例如,如果我有一张可见的卡片findLastVisibleItemPosition()返回-1(我希望看到可见卡片的索引0).

我简化的核心方法如下:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    items = new ArrayList<>();

    RecyclerView recycList = (RecyclerView) findViewById(R.id.rv);
    recycList.setHasFixedSize(true);
    llm = new LinearLayoutManager(this);
    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recycList.setLayoutManager(llm);
    recycList.addOnChildAttachStateChangeListener(new ChildAttachListener(llm));
    adapter = new RecycAdapter(items);
    recycList.setAdapter(adapter);
}

private void addItem(){
    items.add(new Item());
    adapter.notifyDataSetChanged();
}

private class ChildAttachListener implements OnChildAttachStateChangeListener{
    LinearLayoutManager llm;

    public ChildAttachListener(LinearLayoutManager llm){
        super();
        this.llm = llm;
    }

    @Override
    public void onChildViewAttachedToWindow(View view) {

        System.out.println("Items size = "+items.size() + ", Last …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

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

OnNestedScroll - 有时不触发

当我滚动NestedScrollViewCoordinatorLayout. 我实现了这一点Behavior,您可以通过此链接进行检查(github示例)。问题是在OnNestedScroll方法内部调用显示/隐藏方法。不幸的是,有时当我滚动时,不会调用此方法。然而,onNestedScrollAccepted方法总是被调用。我没有找到任何不调用它的原因(比如 20-30% 的时间)。你知道为什么会发生这种情况吗?

这是我的行为课:

public class ScrollAwareFABBehavior  extends CoordinatorLayout.Behavior {
    FloatingActionMenu fabMenu;
    Context cont;

    public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
        super();
        cont =context;
    }
    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child,
                                       View directTargetChild, View target, int nestedScrollAxes) {
        if (nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL)
        {
            return true;
        }
        return super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target,
                        nestedScrollAxes);
    }

    @Override
    public void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View target,
                               int dxConsumed, int dyConsumed, int …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-coordinatorlayout android-nestedscrollview

6
推荐指数
0
解决办法
1045
查看次数

将枚举存储在NSArray中?

我是Objective-C的新手,但在C++和C方面经验丰富.

我想在数组中存储一些枚举常量.在C++中我会做这样的事情:

enum color {RED, BLUE, YELLOW, GREEN};
vector<color> supportedColors;
supportedColors.push_back(RED);
supportedColors.push_back(GREEN);
Run Code Online (Sandbox Code Playgroud)

但是NSArraywill只存储对象指针(id's).那么它们应该如何存储?我可以将它们转换为整数并将它们存储在一个NSNumber对象中,但这看起来很混乱.

我想知道经验丰富的obj-c程序员做了什么?

iphone cocoa objective-c

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

使用android:process =":remote"重新创建android应用程序对象

我在我的应用程序中使用AIDL服务.我还想运行另一个进程,所以我android:process=":remote"在清单中使用服务声明.

我的问题是,当:remote进程启动时,它显然会重新创建Application对象.

当我覆盖应用程序对象并在onCreate()方法中调用大量客户端东西时,我真的不喜欢它.但我希望服务代码与客户端驻留在同一个apk中.

我能做到吗?是否Application在新进程启动时始终重新创建对象?

感谢您的帮助.谢谢!

service android process

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

等到异步api调用完成 - Swift/IOS

我正在开发一个ios应用程序,appDelegate我的内容是:

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {    
    self.api.signInWithToken(emailstring, token: authtokenstring) {
        (object: AnyObject?, error:String?) in            
            if(object != nil){
                self.user = object as? User
                // go straight to the home view if auth succeeded
                var rootViewController = self.window!.rootViewController as UINavigationController
                let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewControllerenter
                // code here
                rootViewController.pushViewController(homeViewController, animated: true)
            }
        }
    return true
}
Run Code Online (Sandbox Code Playgroud)

api.signInWithToken是一个用Alamofire进行的异步调用,我想在func应用程序的最后一端返回true之前等待它的完成.

closures swift

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

首次切换Android 5.0棒棒糖上的滑动菜单后,UI不会刷新

我有一个ResponsiveUIActivity延伸SlidingFragmentActivity.我的应用程序在Android 5.0版下完美运行.但是当我第一次切换滑动菜单时,我的UI没有刷新,也没有可点击.例如,我无法在第一次切换后滚动ListView或写入某些内容EditText.如果我切换滑动菜单,UI将刷新,我可以看到更改.我怎么解决这个问题?

ResponsiveUIActivity.java

public class ResponsiveUIActivity extends SlidingFragmentActivity {
    private Fragment mContent;
    public static ResponsiveUIActivity rootActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle(R.string.responsive_ui);
        setContentView(R.layout.responsive_content_frame);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        rootActivity = this;

        // startNotificationService();

        // check if the content frame contains the menu frame
        if (findViewById(R.id.menu_frame) == null) {
            setBehindContentView(R.layout.menu_frame);
            getSlidingMenu().setSlidingEnabled(true);
            getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

            // show home as up so we can toggle
            getActionBar().setDisplayHomeAsUpEnabled(false);
            getActionBar().setDisplayShowHomeEnabled(false);
        } else {
            // add a dummy view
            View v = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments slidingmenu

5
推荐指数
2
解决办法
884
查看次数

API调用在Anko Async中无法正常工作

我正在尝试使用Kotlin在Android中发出http请求,而且我遇到过两种方式.

一种是传统的方式,使用AsyncTask(不是很漂亮),我使用下面的代码(只是doInBackground,因为类的其余部分似乎是不必要的):

override fun doInBackground(vararg params: Void?): String? {
    val url = URL("myUrl")
    val httpClient = url.openConnection() as HttpURLConnection
    if(httpClient.getResponseCode() == HttpURLConnection.HTTP_OK){
        try {
            val stream = BufferedInputStream(httpClient.getInputStream())
            val data: String = readStream(inputStream = stream)
            return data;
        } catch (e : Exception) {
            e.printStackTrace()
        } finally {
            httpClient.disconnect()
        }
    }else{
        println("ERROR ${httpClient.getResponseCode()}")
    }
    return null
}
Run Code Online (Sandbox Code Playgroud)

现在,我遇到了一个名为Anko的库,许多人都知道,我尝试将其DSL用于异步任务.问题是,我没有找到很多关于异步任务的Anko的信息,所以我想我会打开一个新话题,看看是否有人可以告诉我我做错了什么,或者他们认为我应该做什么做它的工作.

我想使用的代码如下:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    async() {
        val result = URL("myUrl").readText()
        textView1.setText(result)
    }
}
Run Code Online (Sandbox Code Playgroud)

我尽量保持它尽可能小,以尽量减少任何潜在的错误,但我必须在这里做错事,因为异步块内的代码没有做任何事情,但应用程序没有崩溃,我没有得到任何例外.我尝试使用Intellij IDEA进行调试,但在异步块内的第一行之后,它会在说"应用程序正在运行"时停止调试.我最好的猜测是,由于连接失败,它在第一行的某处挂了,但我不知道. …

android asynchronous android-asynctask kotlin anko

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

创建 SSH 密钥时应使用什么作为注释以及如何使用该注释?

我正在尝试按照官方文档为 gitlab repo 创建 SSH 密钥。

\n
\n

运行 ssh-keygen -t,后跟密钥类型和可选注释。此注释包含在 \xe2\x80\x99s 创建的 .pub 文件中。您可能需要使用电子邮件地址来发表评论。

\n
\n

我不清楚我应该使用什么作为可选注释?

\n

所以建议使用电子邮件作为评论。该评论将在哪里以及如何使用?如果我只是跳过评论,因为它是可选的怎么办?

\n

ssh ssh-keys

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

Dialog或DialogFragment中的Activity是否存在dispatchTouchEvent()的等效项

我需要截取应用程序中的所有触摸事件以监视自定义活动超时.

目前我dispatchTouchEvent()在我的活动中使用,但如果我在屏幕上有一个对话框,则不会调用它.有没有人知道我是否有任何方法可以在存在对话框的情况下使用相同的功能?

谢谢

android dialog touch-event android-dialogfragment

4
推荐指数
1
解决办法
1796
查看次数

如何找到2个字符串列表中的差异?

我有2个字符串:

A1=[Rettangolo, Quadrilatero, Rombo, Quadrato]
A2=[Rettangolo, Rettangolo, Rombo, Quadrato]
Run Code Online (Sandbox Code Playgroud)

我想得到这个:"我找到了"Quadrilatero",而不是"Rettangolo"".如果我使用removeAll()retainAll()它不起作用,因为我有2个"Rettangolo"实例.事实上,如果我使用a1.containsAll(a2),我会变成现实,我想要假.

谢谢大家考虑我的要求.

java arraylist array-difference

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