小编MAY*_*3AM的帖子

在NestedScrollView中使用RecyclerView时,它不会回收视图

我在RecyclerView里面用NestedScrollView.我也设置setNestedScrollingEnabled为假recyclerview

支持较低的API

ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);

现在!当用户滚动视图时,每件事似乎都没问题,但是!!! recyclerview中的视图不回收!和堆大小迅速增长!!

更新:RecyclerView布局管理器是StaggeredLayoutManager

fragment_profile.xml:

<android.support.design.widget.CoordinatorLayout
    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"
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >
        </android.support.design.widget.AppBarLayout>

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/profileSwipeRefreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

                <!-- RecyclerView and NestedScrollView -->
                <include layout="@layout/fragment_profile_details" />

        </android.support.v4.widget.SwipeRefreshLayout>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

fragment_profile_details.xml:

<LinearLayout
    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"
    android:id="@+id/rootLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:orientation="vertical" >

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/nested_scrollbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="fill_vertical"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:fillViewport="true"
            android:scrollbars="none" >

                <LinearLayout
                    android:id="@+id/nested_scrollbar_linear"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:descendantFocusability="blocksDescendants"
                    android:orientation="vertical" >

                        <android.support.v7.widget.CardView
                            android:id="@+id/profileCardview"
                            android:layout_width="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android recycle android-recyclerview nestedscrollview

55
推荐指数
1
解决办法
8783
查看次数

如何使用ijkplayer库

我打算用ijkplayer github链接.我下载了这个,然后通过File> Import> General> Existing Projects to Workspace将它导入eclipse.之后我有三个项目:

1.ijkmediaplayer ( library )
2.ijkmediawidget ( VideoView-like interface )
3.ijkmediademo   ( Demo project )
Run Code Online (Sandbox Code Playgroud)

当我运行ijkmediademo时,Error发生了,程序崩溃了.我有这些错误:

07-06 14:06:26.913: E/AndroidRuntime(11394): FATAL EXCEPTION: main
07-06 14:06:26.913: E/AndroidRuntime(11394): Process: tv.danmaku.ijk.media.demo, PID: 11394
07-06 14:06:26.913: E/AndroidRuntime(11394): java.lang.UnsatisfiedLinkError: Couldn't load ijkffmpeg from loader dalvik.system.PathClassLoader[dexPath=/data/app/tv.danmaku.ijk.media.demo-8.apk,libraryPath=/data/app-lib/tv.danmaku.ijk.media.demo-8]: findLibrary returned null
07-06 14:06:26.913: E/AndroidRuntime(11394):    at java.lang.Runtime.loadLibrary(Runtime.java:358)
07-06 14:06:26.913: E/AndroidRuntime(11394):    at java.lang.System.loadLibrary(System.java:526)
07-06 14:06:26.913: E/AndroidRuntime(11394):    at tv.danmaku.ijk.media.player.IjkMediaPlayer$1.loadLibrary(IjkMediaPlayer.java:86)
07-06 14:06:26.913: E/AndroidRuntime(11394):    at tv.danmaku.ijk.media.player.IjkMediaPlayer.loadLibrariesOnce(IjkMediaPlayer.java:95)
07-06 14:06:26.913: E/AndroidRuntime(11394):    at tv.danmaku.ijk.media.player.IjkMediaPlayer.initPlayer(IjkMediaPlayer.java:137)
07-06 14:06:26.913: E/AndroidRuntime(11394):    at tv.danmaku.ijk.media.player.IjkMediaPlayer.<init>(IjkMediaPlayer.java:133) …
Run Code Online (Sandbox Code Playgroud)

eclipse android ffmpeg media-player

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

处理RecyclerView,NestedScrollView和CardView

我将在我的应用程序中实现此UI: UI

好吧,我之前尝试过的一些方法:

1.使用CollapsingToolbarLayout 我把我CardView的insid CollapsingToolbarLayout并把他们都在AppBarLAyout.

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|exitUntilCollapsed" >

            <CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />
                  <!-- My Views Goes there -->
            </CardView

            <android.support.v7.widget.Toolbar
                android:id="@+id/flexible.example.toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@null"
                app:layout_collapseMode="pin"
                style="@style/ToolBarWithNavigationBack"
                />
        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <RecyclerView
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
    ></RecyclerView>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

PS:我删除了不相关的代码,不提我

这种方式正常但是!!! 当CardView高度高于屏幕高度时,它的内容由AppBarLayout用户显示并且不向用户显示

2.使用NestedScrollView 我放入CardViewRecyclerView内部NestedScrollView.但问题是当用户到达时回收到RecyclerView,然后滚动回到顶部,fling会变得迟钝和错误并停止一些用户必须滚动越来越多的地方!

<android.support.v4.widget.NestedScrollView
    android:id="@+id/nested_scrollbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:scrollbars="none" >
        <LinearLayout
            android:id="@+id/nested_scrollbar_linear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

                <android.support.v7.widget.CardView
                    android:id="@+id/flexible.example.cardview"
                    android:layout_width="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview android-collapsingtoolbarlayout android-appbarlayout nestedscrollview

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

Koush Ion Library - 使用进度条、TimeoutException 上传多部分/表单数据

我将像这样使用 Ion 将文件上传到 REST API(基于 Koush 提供的示例代码)

        if (Upload != null && !Upload.isDone() && !Upload.isCancelled()){
            resetUploadReq();
            return;
        }

        String UploadUrl    = Constants.Video_Upload_URL+userToken;
        Upload              = Ion.with(UploadActivity.this).load(UploadUrl)
                              .uploadProgressHandler(new ProgressCallback() {

                                @Override
                                public void onProgress(long uploaded, long total) {
                                    int mProgress   = (int) (100*uploaded / total);
                                    mUploadBtn.setProgress(mProgress);
                                }
                            })
                              .setTimeout( 15 * 1000)
                              .setMultipartFile("file", new File(Path))
                              .asJsonObject()
                              .setCallback(new FutureCallback<JsonObject>() {

                                @Override
                                public void onCompleted(Exception ex, JsonObject result) {
                                    resetUploadReq();
                                    if (ex == null){
                                        JsonObject  ReturnJson  = result.getAsJsonObject();
                                        Status                  = ReturnJson.get("status").getAsBoolean();

                                        if (Status == …
Run Code Online (Sandbox Code Playgroud)

android file-upload multipartform-data timeoutexception android-ion

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

SwipeRefreshLayout中的Listview-自定义适配器仅显示一行时不显示任何内容

在此处输入图片说明

在我的应用程序中,我有一个列表视图。当我要显示一个以上的项目时,所有事情都可以正常工作,但是当我在列表视图中显示一个项目时,它却显示出一种罕见的行为。

第一:如果单个项目的高度大于窗口高度...它就像一个饰物并正常工作。

第二:如果单个项目的高度小于窗口高度...有时会显示项目(B),有时却不显示!(C)。

第三:我正在使用支持库中的SwipeRefreshLayout,当我尝试刷新listview时,如果listview中有一项...如果高度小于窗口高度,则不会显示该项目。

我不知道了!有谁能够帮助我

我知道这个问题与SwipeRefreshLayout或Listview的高度有关,导致当我将marginTop设置为该视图(作为屏幕高度的一半)时,listview可以正常工作。

我的xml文件是:

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_Container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp"
android:background="#FFedf1f2"
android:paddingLeft="8.5dp"
android:paddingRight="8.5dp"
android:paddingTop="0dp" >

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:divider="@android:color/transparent"
    android:dividerHeight="8.5dp"
    android:scrollbars="none" >
</ListView>
Run Code Online (Sandbox Code Playgroud)

在我至少要在列表视图中显示一个以上的项目之前,所有内容都是一种魅力。但是当我要在列表视图中显示一个项目时,我的列表视图不显示任何内容:(

为什么?我的错在哪里?我哪里错了?

这是getView()我的适配器(扩展BaseAdapter-我已经剪掉了几行代码):

public View getView(int position, View convertView, ViewGroup parent) {

    Typeface MyriadRegular  = Farsi.GetMyriadRegular(mActivity);
    Typeface MyriadBold     = Farsi.GetMyriadBold(mActivity);
    Typeface Yagut          = Farsi.GetYagut(mActivity);
    Typeface JalalBold      = Farsi.GetJalalBold(mActivity);

    User_Session            = new SessionManagement(mActivity);

    View row    = convertView;
    ViewHolder holder;

    mVideo              = mData.get(position);
    //======================================================================== USER
    USERNAME            = mVideo.get("USERNAME").toUpperCase();
    CHANNEL_NAME        = mVideo.get("CHANNEL_NAME");
    CHANNEL_ID          = …
Run Code Online (Sandbox Code Playgroud)

android listview android-listview baseadapter custom-adapter

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

打开活动实例

我有一个应用程序,用于保存活动中的帖子信息.在此活动相关帖子列在帖子底部.用户点击相关帖子可以去发布活动并查看帖子信息和相关帖子.

数字

正如你在图片中看到的那样,我有活动A,它包含帖子及其相关帖子.当用户点击帖子时,我将用户发送到具有新帖子ID的活动A,并按新数据填写活动.

但我认为这不是正确的方法!

我应该用Fragment而不是Activity

android out-of-memory android-fragments android-activity

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

使用Koush Ion库上传多部分文件

在我的上一个应用程序中,我将使用Koush Ion库.它非常方便但我将文件上传到我的休息服务器时遇到了问题.注意:我的服务器对成功上传过程的响应是1

我的代码我喜欢这个:

public class MainActivity extends Activity {

    Button upload, login;
    TextView uploadCount;
    ProgressBar progressBar;
    String token, FilePath;

    Future<String> uploading;

    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        upload      = (Button) findViewById(R.id.upload);
        uploadCount = (TextView) findViewById(R.id.upload_count);
        progressBar = (ProgressBar) findViewById(R.id.progress);
        token       = "147c85ce29dc585966271280d59899a02b94c020";
        FilePath    = Environment.getExternalStorageDirectory().toString()+"/police.mp3";


        upload.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (uploading !=null && !uploading.isCancelled()){
                    resetUpload();
                    return;
                }

                upload.setText("Uploading...");

                uploading = Ion.with(MainActivity.this)
                            .load("http://myserver.com/api/v1/tone/upload/?token="+token)
                            .setLogging("UPLOAD LOGS:", Log.DEBUG)
                            .uploadProgressBar(progressBar)
                            .uploadProgressHandler(new ProgressCallback() {

                                @Override
                                public …
Run Code Online (Sandbox Code Playgroud)

android file-upload android-asynctask ion-koush

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

使用ViewHolder类在getview()中设置onClickListener

我有一个扩展BaseAdapter的自定义列表适配器.我创建了一个holder类来标记我的视图,以避免夸大已经存在的视图.

static class ViewHolder{
    TextView tvName;
    TextView tvDescription;
    Button   btAdd;
}
Run Code Online (Sandbox Code Playgroud)

在我的getView中我有这样的事情:

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    ViewHolder holder = null;

    if(vi == null){
        vi = inflater.inflate(R.layout.list_row, null);
        holder = new ViewHolder();
        holder.tvName = (TextView)vi.findViewvById(R.id.name);
        holder.tvDescription = (TextView)vi.findViewvById(R.id.desc);
        holder.btAdd = (Button)vi.findViewvById(R.id.btnadd);
    }else{
        holder = (ViewHolder) vi.getTag();
    }

    holder.btnAdd.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            holder.btnAdd.startAnimation(scale);
        holder.tvName.setVisibility(View.GONE);
        }
    });
    return vi;
}
Run Code Online (Sandbox Code Playgroud)

但eclipse从"holder.btnAdd.startAnimation(scale);"获得错误.并说持有人应该是最后的......

我该如何解决?

android listview onclicklistener

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