小编R4j*_*R4j的帖子

滚动时获取RecycleView的中心可见项

这就是我要的:

在此输入图像描述

如上图所示,我想绘制一条中心线RecycleView,然后在滚动时(以及向左或向右移动)获取中心项目.
这是我尝试绘制水平线RecycleView:

    HorizontalAdapter adapter = new HorizontalAdapter(data);
    LinearLayoutManager layoutManager
            = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    recycleView.setLayoutManager(layoutManager);
    recycleView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

有没有办法知道哪个项目被移动到中心RecycleView?如何RecycleView向左或向右滚动一个位置?

更新:我试图使用滚动侦听器来获得中间位置,但它不能作为方面.

  @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            int firstPos = layoutManager.findFirstVisibleItemPosition();
            int lastPos = layoutManager.findLastVisibleItemPosition();
            int middle = Math.abs(lastPos - firstPos) / 2 + firstPos;

            int selectedPos = -1;
            for (int i = 0; i < adapter.getItemCount(); i++) {
                if (i == middle) {
                    adapter.getItem(i).setSelected(true);
                    selectedPos …
Run Code Online (Sandbox Code Playgroud)

android scroll android-recyclerview

50
推荐指数
4
解决办法
3万
查看次数

使用ListView Android中的进度条下载多个文件

我想创建一个ListView允许用户下载许多文件并在每个ListView项目中显示进度条状态的创建.它看起来像这样:

在此输入图像描述

下载ListView有一些规则:

  • 每个下载任务都显示在一个ListView项目中,其中包含进度条,百分比和当前状态(下载,等待,完成).
  • 允许最多5个下载任务,其他任务必须等待
  • 用户可以取消下载任务,并从中删除此任务 ListView
  • ListView是在下载活动中.用户可以更改为其他活动.当他们离开时,继续在后台下载.当他们回来时,显示下载任务的当前进度和状态.
  • 保留已完成的下载任务,直到用户想要删除它们.

我试着用ThreadPoolExcutor一个Service.对于每个下载任务,我可以完成百分比,但我不知道如何将它们广播到适配器以显示进度.而且我不知道如何在后台运行所有任务,然后在包含活动的活动ListView处于活动状态时发布进度并保留已完成的任务
如果有任何库或示例可以解决我的问题,那将会很棒.提前致谢! P/S:我已经搜索过类似的问题,但我找不到这个问题的解决方案,所以我不得不详细地创建自己的问题.所以请不要将其标记为duplicate.谢谢.

android android-service android-listview

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

在Android中使用基本身份验证错误"HTTP/1.1 401 Unauthorized" - EWS 2010

我指的是这个链接请求服务器.问题是某个时候(并不总是,大约20% - 30%,意味着有时我可以得到成功的响应),我得到401错误和服务器响应基本授权挑战预期,但没有找到.

这是我的代码:

 HttpRequestInterceptor preemptiveAuth = new HttpRequestInterceptor()
{
    public void process(final HttpRequest request, final HttpContext context)
            throws HttpException, IOException
    {
        AuthState authState = (AuthState) context
                .getAttribute(ClientContext.TARGET_AUTH_STATE);
        CredentialsProvider credsProvider = (CredentialsProvider) context
                .getAttribute(ClientContext.CREDS_PROVIDER);
        HttpHost targetHost = (HttpHost) context
                .getAttribute(ExecutionContext.HTTP_TARGET_HOST);

        if (authState.getAuthScheme() == null)
        {
            AuthScope authScope = new AuthScope(targetHost.getHostName(),
                    targetHost.getPort());
            Credentials creds = credsProvider.getCredentials(authScope);
            if (creds != null)
            {
                authState.setAuthScheme(new BasicScheme());
                authState.setCredentials(creds);
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

这是我的身份验证:

    HttpPost httpPost = new HttpPost(SERVER_AUTH_URL);
        httpPost.setHeader("Content-type", "text/xml; charset=utf-8"); …
Run Code Online (Sandbox Code Playgroud)

java android basic-authentication exchangewebservices

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

带有参数的Spring RestTemplate HTTP Post导致400错误的请求错误

可能重复需要有关身体参数的RestTemplate Post Request的帮助吗?Spring REST模板POST但这些答案对我不起作用
我试图Instagram通过Spring Android 从API 获取访问令牌.来自Instagram文档的请求如下:

curl \-F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR-REDIRECT-URI' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token
Run Code Online (Sandbox Code Playgroud)

这是我的请求访问令牌(在我获得请求令牌成功后):

 MultiValueMap<String, String> mvm = new LinkedMultiValueMap<String, String>();
    mvm.add("client_id", INSTAGRAM_CILENT_ID);
    mvm.add("client_secret", INSTAGRAM_SECRET);
    mvm.add("grant_type", "authorization_code");
    mvm.add("redirect_uri", CALLBACKURL);
    mvm.add("code", requestToken);

    InstagramResult result = restTemplate .postForObject("https://api.instagram.com/oauth/access_token", mvm, InstagramResult .class);
Run Code Online (Sandbox Code Playgroud)

结果映射类:

public class InstagramLogin {
   public String access_token;
   public InstagramUser user;
}

public class InstagramUser {
   public String id;
   public String username; …
Run Code Online (Sandbox Code Playgroud)

java spring android spring-android

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

如何将AsyncTask从Android移植到java?

AsyncTask对于UI线程和Android中的其他线程之间的同步非常有用.所以我已经阅读了它的源代码并尝试移植到java经典(JDK)但没有成功,因为java中没有一些类(Message,Handler ..).
我想创建一个类,其中包含一些有用的函数,如AsyncTask(可以在主线程和其他线程之间同步):

    doInBackground(Params... params)
    onProgressUpdate(Progress... values)
    onPostExecute(Result result)
    publishProgress(Progress... values)
    onPreExecute()
    onCancelled()
Run Code Online (Sandbox Code Playgroud)

有没有办法试试呢?

java multithreading android

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

用快速语言理解去初始化和继承

假设我有两个类:基类和子类,如下所示:

class Base{
    var name: String?
    init() {
       name = "The base class"
    }

    deinit {
       println("call Deinitialization in base class")
       name = nil
    }
}

class Sub: Base{
    var subName: String?
    init() {
     super.init()
     subName = "The sub class"
    }

    deinit {
       println("call Deinitialization in sub class")
       subName = nil
       // does it really call super.deinit() ?
       // or assign name = nil ?
    }
}
Run Code Online (Sandbox Code Playgroud)

当调用子类的deinitializer时,是否调用super.deinit()name变量赋值为nil?或者我必须在子类的deinitializer中手动分配?

inheritance swift

19
推荐指数
2
解决办法
6087
查看次数

java.lang.IllegalStateException:失败保存状态:active已清除片段中的索引

首先,我的应用程序具有以下结构:

 SpashActivity -> MainActivity -> switching between many fragments
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用SlideMenu在片段之间切换.我必须使用attach而不是replace保持片段状态.它看起来像:

  public void switchContent(int index, String fragmentTag) {                
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    if (fragmentManager.findFragmentByTag(fragmentTag) != mContent) {
        if (!mContent.isDetached()) {
            transaction.detach(mContent);
        }
        if (null == fragmentManager.findFragmentByTag(fragmentTag)) {
            switch (index) {
            case 0:
                mContent = new CategoryFragment();
                break;
            case 1:
                mContent = new BookFragment();
                break;
            case 2:
                mContent = new BookDetailFragment();
                break;
             // etc
            }
        } else {
                mContent = fragmentManager.findFragmentByTag(fragmentTag);              
        } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments slidingmenu

15
推荐指数
1
解决办法
8568
查看次数

Android - 谷歌地图将相机从位置移动到另一个位置

不久,我想知道如何通过动画将相机从当前位置移动到另一个位置.这是我的尝试:

 mapView.moveCamera(CameraUpdateFactory.newLatLngZoom(targetPos, 3));
 mapView.animateCamera(CameraUpdateFactory.zoomTo(5), 2000, null);
Run Code Online (Sandbox Code Playgroud)

但谷歌地图确实将相机从某个位置移动到目标位置.如何设置它从A移动到目标,哪个A是我可以设置的位置?提前致谢.

android google-maps

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

如何在android中填充不透明的矩形

我可以用画布绘制矩形填充矩形:

Rect rt = new Rect(0, 0, getWidth(), getHeight());
myPaint.setColor(myColor);
myPaint.setStyle(Style.FILL);
canvas.drawRect(rt, myPaint);
Run Code Online (Sandbox Code Playgroud)

但是我需要用不透明度填充矩形的方法(百分比,0%是TRANSPARENT).
我怎样才能做到这一点?

android android-canvas

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

确定android中的backstack片段空状态

我的应用程序结构如下:

  SplashActivity -> MainActivity -> (switching between many fragments)
Run Code Online (Sandbox Code Playgroud)

我的期望:当片段返回堆栈计数为零时,从主活动完成应用程序.这是我的尝试:

在SplashAcitivty中

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getIntent().getBooleanExtra("exit", false)) {
        finish();
    }
  }
Run Code Online (Sandbox Code Playgroud)

在MainActivity中:

@Override
public void onBackPressed() {
  // I need to implement this method
  if( backstackCount() == 0){
    Intent intent = new Intent(this, SplashActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra(SplashActivity.EXIT_KEY, true);
    startActivity(intent);
   }else{
    super.onBackPressed();
   }
}
Run Code Online (Sandbox Code Playgroud)

所以,请告诉我如何在空的时候确定后筹码?因为我使用SlideMenu库,所以我的所有片段都会多次切换,并且在切换时会将它们添加到后台堆栈中.看起来像这样:

 getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, fragment)
    .addToBackStack(null)
    .commit();
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-activity

12
推荐指数
1
解决办法
8072
查看次数