我在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) 我打算用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) 好吧,我之前尝试过的一些方法:
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
我放入CardView和RecyclerView内部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
我将像这样使用 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

在我的应用程序中,我有一个列表视图。当我要显示一个以上的项目时,所有事情都可以正常工作,但是当我在列表视图中显示一个项目时,它却显示出一种罕见的行为。
第一:如果单个项目的高度大于窗口高度...它就像一个饰物并正常工作。
第二:如果单个项目的高度小于窗口高度...有时会显示项目(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
我有一个应用程序,用于保存活动中的帖子信息.在此活动相关帖子列在帖子底部.用户点击相关帖子可以去发布活动并查看帖子信息和相关帖子.
正如你在图片中看到的那样,我有活动A,它包含帖子及其相关帖子.当用户点击帖子时,我将用户发送到具有新帖子ID的活动A,并按新数据填写活动.
但我认为这不是正确的方法!
我应该用Fragment而不是Activity?
在我的上一个应用程序中,我将使用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) 我有一个扩展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 ×8
file-upload ×2
listview ×2
android-collapsingtoolbarlayout ×1
android-ion ×1
baseadapter ×1
eclipse ×1
ffmpeg ×1
ion-koush ×1
media-player ×1
recycle ×1