小编Win*_*Oak的帖子

支持RecyclerView在触摸之前不会显示任何内容

我在我的应用程序中使用了RecyclerView支持,我看到了最奇怪的事情.在我触摸滚动之前,它不会显示任何项目.然后,突然之间,RecyclerView会自行填充.我已经确认填充了支持适配器的列表,并且在触摸事件之前永远不会调用onCreatViewHolder和onBindViewHolder.

以下是我设置recyclerview的方法:

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        Drawable divider = new ColorDrawable(ProfileInfo.getCurrentProfileColor());
        mInboxList.addItemDecoration(new DividerItemDecoration(getActivity(), divider, false));
        mInboxList.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
        mInboxList.setAdapter(new InboxAdapter(getActivity(), new ArrayList<Conversation>()));
        new AsyncTask<Void, Void, List<Conversation>{

              public List<Conversation> doInBackground(...){
                   //load the conversations
                   return conversations;
              }

              public void onPostExecute(List<Conversation> conversations){
                   ((InboxAdapter) mInboxList.getAdapter()).clear(false);
                   ((InboxAdapter) mInboxList.getAdapter()).addAll(conversations);

              }

        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     }
Run Code Online (Sandbox Code Playgroud)

这是我的适配器的要点:

public class InboxAdapter extends RecyclerView.Adapter<InboxAdapter.ViewHolder> {
    List<Conversation> mConversations; //initialized in contructor

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = mInflater.inflate(R.layout.inbox_item, parent, false);
        ViewHolder holder …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

41
推荐指数
4
解决办法
4665
查看次数

TTimer.OnTimer事件处理程序是否可重入?

我的应用程序中有一个TTimer,每2秒触发一次,并调用我的事件处理程序HandleTimerEvent().HandleTimerEvent()函数修改共享资源,在返回之前可能需要10秒的时间才能执行.此外,我在事件处理程序中调用Sleep()有时放弃处理器.

我不确定C++构建器的TTimer对象在调用事件时是如何工作的,所以我刚才解释的场景让我思考,尤其是在先前的调用返回之前是否调用了HandleTimerEvent().

问题归结为几件事.

TTimer对象是否对事件进行排队?

在先前的调用返回之前,TTimer对象是否可以调用我的事件处理程序?

delphi c++builder

18
推荐指数
1
解决办法
2728
查看次数

为何在销毁Activity时调用DialogFragment.onCreateView?

我正在使用android支持库v4修订版11并不时,我看到下面的堆栈跟踪; 我怀疑它是由于从最近发布而发生的,因此我尝试访问的模型为空.无论如何,这个跟踪让我想知道为什么在活动被销毁时调用onCreateView,以及处理这种情况的最佳方法是什么?

java.lang.NullPointerException
    at com.example.dialogs.ExampleDialogFragment.onCreateView(ExampleDialogFragment.java:53)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
    at android.support.v4.app.FragmentManagerImpl.dispatchReallyStop(FragmentManager.java:1888)
    at android.support.v4.app.FragmentActivity.onReallyStop(FragmentActivity.java:787)
    at android.support.v4.app.FragmentActivity.doReallyStop(FragmentActivity.java:764)
    at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:322)
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3642)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3673)
    at android.app.ActivityThread.access$2900(ActivityThread.java:125)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

崩溃后,后台堆栈中的活动恢复,我会检查模型在活动中是否有效onResume(),onStart()并且onCreate(Bundle savedInstanceState).如果模型无效,我从那里开始另一个活动FLAG_ACTIVITY_NO_HISTORY,呼叫finish()return;例如

@Override
public void onResume() {        
    Model cm = Application.getModel();
    final boolean isModelAvailable = cm != null;
    if (!isModelAvailable) { …
Run Code Online (Sandbox Code Playgroud)

android android-dialogfragment android-support-library

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

Android数据绑定编译警告:使用'.'的方法引用 已弃用

在构建项目时,我看到以下编译器警告:

warning: Method references using '.' is deprecated. Instead of 'item.onCardClicked', use 'item::onCardClicked'

我使用android插件gradle 2.1.0.

我的布局文件如下所示:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

<data>
    <variable
        name="item"
        type="com.example.Card"/>
</data>
<LinearLayout android:layout_width="match_parent"
      android:layout_height="match_parent">
  <TextView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:clickable="true"
      android:onClick="@{item.onCardClicked}"/>
...
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向来解决这个警告吗?

android android-gradle-plugin android-databinding

10
推荐指数
1
解决办法
1631
查看次数

有没有一种方法可以在布局中测试android数据绑定表达式?

使用Android的新数据绑定库,您可以在xml布局中编写内联表达式。例如,您可以这样设置视图的可见性:

<TextView
   android:text="@{user.lastName}"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
Run Code Online (Sandbox Code Playgroud)

我该如何进行单元/布局测试?我想确保当user.isAdult为true和false时可见性正确切换。

android unit-testing android-databinding

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

在Android的支持包上,使用与否?

例如,我一直在考虑在定位最新API并将min SDK设置为7时使用Android支持包的优缺点.

Android文档指出:"我们的目标是通过提供更多的API,你可以与你的应用程序中捆绑,以简化你的发展,你可以少担心平台的版本"; 但是,我对它是否会变得更简单有疑问.

考虑TabActivity,它已被弃用.使用TabActivity的替代方法是通过Fragments,通过查看示例以获得表格视图,它看起来并不简单.此外,在决定使用Fragments类和FragmentActivity类时,我还是必须使用反射,所以为什么不使用TabActivity.我希望得到你的意见.我倾向于不使用它,但我想知道我是否错过了任何好处.

android

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

如何在Renderscript中获取位图分配的邻近像素?

我想执行需要相邻像素的图像处理操作,但我不确定如何从分配中访问它们.我见过的大多数内核都在单个像素上运行,更新它,然后返回它.有没有办法可以在下面的方法中访问(x,y)的邻居.

uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {

  uchar4 neighbor = allocation[x+1][y]; // How do I do this in renderscript?
  uchar4 otherNeighbor = allocation[x-1][y]; 
  ...
}
Run Code Online (Sandbox Code Playgroud)

android image-processing renderscript

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