gpt4 book ai didi

android - 在回收站 View 上快速滚动并无错误地崩溃

转载 作者:行者123 更新时间:2023-11-30 00:22:13 26 4
gpt4 key购买 nike

我正在使用 Retrofit 下载产品列表 (JSON),然后我会将收到的数据设置到我的回收站 View 中。

但是当我在回收站 View 上快速滚动时,当前 fragment (回收站 View 的容器)将关闭,我将转到主要 Activity 。我的 logCat 中没有错误。

这是我设置回收站 View 和改造的 fragment :

  private RecyclerView singleListRecycler;
private RecyclerView.LayoutManager rtlGridLayoutManager;
private RecyclerView.Adapter weekAdapter;
private List<PList> singleList = new ArrayList<PList>();

private String prgCode;
private LinearLayout layoutLoading;
private TextView txtNoGood;

int totalPage = 1;
int currentPage = 1;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_product, container, false);
inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

syncBasket();

user_auth = G.getPremiumState()[0];
user_pass = G.getPremiumState()[1];
user_mobile = G.getPremiumState()[2];

if (user_auth.equals("") || user_mobile.equals("") || user_pass.equals("")) {

Toast.makeText(getContext(), "خطایی رخ داده است ! مجدد تلاش کنید.", Toast.LENGTH_SHORT).show();
Intent goToStartup = new Intent(getContext(), ActivityStartup.class);
getActivity().finish();
startActivity(goToStartup);
}


singleListRecycler = (RecyclerView) view.findViewById(R.id.singleListRecycler);
layoutLoading = (LinearLayout) view.findViewById(R.id.layout_loading);
txtNoGood = (TextView) view.findViewById(R.id.txt_no_good);

Bundle bundle = getActivity().getIntent().getExtras();
if (bundle != null) {
prgCode = bundle.getString("PRG_CODE");
} else {
Intent goBack = new Intent(getContext(), ActivityMainProducts.class);
startActivity(goBack);

}

//Preparing data from server for this group
getSingleGroup(prgCode, currentPage);

//Add Two Listener to RecyclerView
singleListRecycler.addOnScrollListener(new PicassoOnScrollListener(context));
singleListRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);

if (dy < 0) {
// Recycle view scrolling up ...
// Toast.makeText(activitySingleGroup, "Top", Toast.LENGTH_SHORT).show();

} else if (dy > 0) {

if (!singleListRecycler.canScrollVertically(View.SCROLL_AXIS_VERTICAL)) {

currentPage = currentPage + 1;

if (currentPage > totalPage) {
currentPage = totalPage;
layoutLoading.setVisibility(View.GONE);
} else {
layoutLoading.setVisibility(View.VISIBLE);
getSingleGroup(prgCode, currentPage);
}

}
}
}
});

return view;
}

private void getSingleGroup(String code, int page) {

if (singleList.size() == 0) {
G.showProgress(getActivity());
}

APIService apiService = ServiceGenerator.createService(APIService.class, user_auth, user_pass);

String url = "prg/" + code + "/" + page;
Call<ProductModel> call = apiService.getNormalList(url);

call.enqueue(new Callback<ProductModel>() {

@Override
public void onResponse(Call<ProductModel> call, Response<ProductModel> response) {

layoutLoading.setVisibility(View.GONE);
Log.i("LOGO", "Code of Normal is: " + response.code());

if (singleList.size() == 0) {
G.dismissProgress();
}

if (response.code() == 200) {

ProductModel newMainCategory = response.body();

totalPage = newMainCategory.getPTotalPage();

singleList.addAll(newMainCategory.getPList());

rtlGridLayoutManager = new RtlGridLayoutManager(getContext(), 1);
singleListRecycler.setLayoutManager(rtlGridLayoutManager);
weekAdapter = new BaseListAdapter(singleList, (ActivitySingleGroup) getActivity());

if (singleList.size() > 0) {
singleListRecycler.setAdapter(weekAdapter);
} else {
singleListRecycler.setVisibility(View.GONE);
txtNoGood.setVisibility(View.VISIBLE);
}
} else {

singleListRecycler.setVisibility(View.GONE);
txtNoGood.setVisibility(View.VISIBLE);
}
}

@Override
public void onFailure(Call<ProductModel> call, Throwable t) {
Log.i("LOGO", "Error s: " + t.toString());

if (singleList.size() == 0) {
G.dismissProgress();
}

layoutLoading.setVisibility(View.GONE);
singleListRecycler.setVisibility(View.GONE);
txtNoGood.setVisibility(View.VISIBLE);
}

});
}

这是recyclerView的适配器:

public class BaseListAdapter extends RecyclerView.Adapter<BaseListAdapter.ViewHolder> {
private List<PList> menuItems;
private Context mContext;
private ActivitySingleGroup activitySingleGroup;
private int lastPosition = -1;

public BaseListAdapter(List<PList> menuItems, Context mContext) {
this.menuItems = menuItems;
this.mContext = mContext;
this.activitySingleGroup = (ActivitySingleGroup) mContext;
}

public static class ViewHolder extends RecyclerView.ViewHolder {

TextView txtName;
TextView txtPrice;
ImageView imgDefault;
LinearLayout parentLayout;
CoordinatorLayout coordinatorLayout;

public ViewHolder(View v) {
super(v);

txtName = (TextView) v.findViewById(R.id.txtName);
txtPrice = (TextView) v.findViewById(R.id.txtPrice);
imgDefault = (ImageView) v.findViewById(R.id.img_defaultImage);
parentLayout = (LinearLayout) v.findViewById(R.id.parentLayout);
coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.coordinatorLayout);

}
}

@Override
public BaseListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

// Create a new View
final View v = LayoutInflater.from(activitySingleGroup).inflate(R.layout.activity_normal_group_recycler, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {

//Download and Load Default Image from server into imgDefault ImageView
Picasso picasso;
OkHttpClient client = null;
String url = "https://bartarinapp-irdeveloper.rhcloud.com/api/images/download/";

//Handel situations that default image variables will be null
if (menuItems.get(position).getPDefaultImage() != null &&
menuItems.get(position).getPDefaultImage().getDefault() != null) {

if ((menuItems.get(position).getPDefaultImage().getDefault()) &&
(menuItems.get(position).getPDefaultImage().getIId() != null)) {

url += menuItems.get(position).getPDefaultImage().getIId();

client = ServerClass.setAuthImage();

picasso = new Picasso.Builder(mContext)
.downloader(new OkHttp3Downloader(client))
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();

} else {
url = null;
picasso = new Picasso.Builder(mContext)
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();

}
} else {
url = null;
picasso = new Picasso.Builder(mContext)
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();
}


picasso.cancelRequest(holder.imgDefault);
if (url != null && url.length() > 0) {

//put here picaso image load code
picasso.load(url)
.tag(PicassoOnScrollListener.TAG)
.placeholder(R.drawable.loading_01)
.error(R.drawable.loading_02)
.into(holder.imgDefault);

} else {
holder.imgDefault.setImageResource(R.drawable.ic_empty_white_box);
}

holder.txtName.setText(menuItems.get(position).getPName());
holder.txtPrice.setText(String.valueOf(menuItems.get(position).getPPrice()));
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

prepareBottomSheet(view, position, holder.coordinatorLayout);
}
});
}

@Override
public int getItemCount() {
if (menuItems.size() > 0) {

return menuItems.size();

} else {
return 0;
}

}

我在回收站 View 中使用了 Picasso。我不知道这里发生了什么!当应用程序将关闭当前 fragment 或有时会崩溃时,这是我的 logCat。

这是我的 logCat:

java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.google.firebase.FirebaseApp.zza(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1759)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1734)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:6420)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5951)
at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/internal/zzapn;
at com.google.android.gms.internal.zzbku.<clinit>(Unknown Source)
at com.google.android.gms.internal.zzbku.initialize(Unknown Source)
at com.google.firebase.crash.FirebaseCrash.getInstance(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at com.google.firebase.FirebaseApp.zza(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1759)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1734)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:6420)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5951)
at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.internal.zzapn" on path: DexPathList[[zip file "/data/app/codenevisha.com.apps.bartarinapp-1/base.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_dependencies_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_0_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_1_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_2_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_3_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_4_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_5_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_6_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_7_apk.apk", zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_8_apk.apk",
zip file "/data/app/codenevisha.com.apps.bartarinapp-1/split_lib_slice_9_apk.apk"],
nativeLibraryDirectories=[/data/app/codenevisha.com.apps.bartarinapp-1/lib/arm, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.google.android.gms.internal.zzbku.<clinit>(Unknown Source)
at com.google.android.gms.internal.zzbku.initialize(Unknown Source)
at com.google.firebase.crash.FirebaseCrash.getInstance(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at com.google.firebase.FirebaseApp.zza(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1759)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1734)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:6420)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5951)
at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)

我的build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "codenevisha.com.apps.bartarinapp"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})

compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support:cardview-v7:25.1.1'
compile 'com.android.support:recyclerview-v7:25.1.1'
compile 'com.android.support:design:25.1.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'me.relex:circleindicator:1.2.2@aar'

//Retrofit & GSon
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

//Google Services of location
compile 'com.google.android.gms:play-services-location:11.0.1'

//Picasso
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.slider:library:1.1.5@aar'


//Pretty Log
compile 'com.orhanobut:logger:2.1.1'

//Fire base
compile 'com.google.firebase:firebase-crash:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'

compile 'com.github.manuelpeinado.fadingactionbar:fadingactionbar:3.1.2'

testCompile 'junit:junit:4.12'
}



apply plugin: 'com.google.gms.google-services'

感谢您的回答。

最佳答案

看起来您正在使用不同的库版本。

请提供您的 build.gradle 文件。

关于android - 在回收站 View 上快速滚动并无错误地崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com