这就是我要的:
如上图所示,我想绘制一条中心线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) 我想创建一个ListView
允许用户下载许多文件并在每个ListView
项目中显示进度条状态的创建.它看起来像这样:
下载ListView
有一些规则:
ListView
项目中,其中包含进度条,百分比和当前状态(下载,等待,完成).ListView
ListView
是在下载活动中.用户可以更改为其他活动.当他们离开时,继续在后台下载.当他们回来时,显示下载任务的当前进度和状态.我试着用ThreadPoolExcutor
一个Service
.对于每个下载任务,我可以完成百分比,但我不知道如何将它们广播到适配器以显示进度.而且我不知道如何在后台运行所有任务,然后在包含活动的活动ListView
处于活动状态时发布进度并保留已完成的任务
如果有任何库或示例可以解决我的问题,那将会很棒.提前致谢!
P/S:我已经搜索过类似的问题,但我找不到这个问题的解决方案,所以我不得不详细地创建自己的问题.所以请不要将其标记为duplicate
.谢谢.
我指的是这个链接请求服务器.问题是某个时候(并不总是,大约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) 可能重复需要有关身体参数的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) 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)
有没有办法试试呢?
假设我有两个类:基类和子类,如下所示:
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中手动分配?
首先,我的应用程序具有以下结构:
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) 不久,我想知道如何通过动画将相机从当前位置移动到另一个位置.这是我的尝试:
mapView.moveCamera(CameraUpdateFactory.newLatLngZoom(targetPos, 3));
mapView.animateCamera(CameraUpdateFactory.zoomTo(5), 2000, null);
Run Code Online (Sandbox Code Playgroud)
但谷歌地图确实将相机从某个位置移动到目标位置.如何设置它从A移动到目标,哪个A是我可以设置的位置?提前致谢.
我可以用画布绘制矩形填充矩形:
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).
我怎样才能做到这一点?
我的应用程序结构如下:
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)