我已尝试按照此github 问题中的说明重新启动和重建。
真正让我困惑的是,该值要求我输入类型:com.example.testapp.SwipePlaceHolderView 而不是提供的类型:com.mindorks.placeholderview.SwipePlaceHolderView
我不明白为什么?
这是我班级中发生此问题的代码:
package com.example.testapp;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.mindorks.placeholderview.SwipeDecor;
import com.mindorks.placeholderview.SwipePlaceHolderView;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity implements SwipeCardCallback {
private Context context;
private SwipePlaceHolderView swipePlaceHolderView;
private Button buttonSelected, buttonRejected;
private List<Movie> movieList;
private int selected = 0,rejected = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
movieList = new ArrayList<>();
swipePlaceHolderView = findViewById(R.id.swipePlaceHolder);
buttonSelected = findViewById(R.id.button_selected);
buttonRejected = findViewById(R.id.button_rejected);
swipePlaceHolderView.getBuilder().setDisplayViewCount(3)
.setSwipeDecor(new SwipeDecor().setPaddingTop(20)
.setRelativeScale(0.01f).setSwipeInMsgLayoutId(R.layout.swipe_in_layout)
.setSwipeOutMsgLayoutId(R.layout.swipe_out_layout));
loadData();
buttonSelected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
swipePlaceHolderView.doSwipe(true);
}
});
buttonRejected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
swipePlaceHolderView.doSwipe(false);
}
});
}
private void loadData() {
ApiInterface apiInterface = ApiClient.getInstance().create(ApiInterface.class);
apiInterface.getAllMovies().enqueue(new Callback<List<Movie>>() {
@Override
public void onResponse(Call<List<Movie>> call, Response<List<Movie>> response) {
movieList = response.body();
for (Movie movie : movieList){
swipePlaceHolderView.addView(new SwipeCardView(context,swipePlaceHolderView,movie));
}
}
@Override
public void onFailure(Call<List<Movie>> call, Throwable t) {
Log.d("Error",t.getMessage());
}
});
}
@Override
public void onSwipeIn() {
selected = selected + 1;
buttonSelected.setText("Selected ("+selected+")");
}
@Override
public void onSwipeOut() {
rejected = rejected + 1;
buttonRejected.setText("Rejected ("+rejected+")");
}
}
这是 build.gradle:
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.testapp"
minSdkVersion 26
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.mindorks:placeholderview:0.7.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.github.bumptech.glide:glide:4.6.1'
}