Я занимаюсь разработкой приложения для грамматики Android с использованием Android Studio и использую Textgears в качестве API.Кто-нибудь знает, как применять textgears в api?У меня проблема с отображением ожидаемого результата.
Обновление: я добавляю свой код, а также использую Retrofit для доступа к сетевому вызову.
Service.class
public interface Service {
@GET("/check.php?")
Call<List<Errors>> readErrors(@Query("userInput") String userInput,
@Query("apiKey") String apiKey);
}
Fragment.class
public class Tab1Fragment_GrammarChecker extends Fragment {
@BindView(R.id.InputTextEditText)
EditText mInputGrammarEditText;
@BindView(R.id.ErrorsRecyclerView)
RecyclerView mErrorsRecyclerView;
List<Errors> errors = new ArrayList<>();
public ArrayList<Errors> errorArrayList = new ArrayList<>();
public String userInput = "I is an engeneer!";
public String apiKey = ""; //apiKey is confidential
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab1_grammar_checker, container, false);
ButterKnife.bind(this, view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
mErrorsRecyclerView.setLayoutManager(layoutManager);
loadJson();
return view;
}
@OnClick(R.id.checkGrammarButton)
public void setOnClick(View view){
Toast.makeText(getActivity(), "Check Grammar", Toast.LENGTH_LONG).show();
}
public void loadJson(){
// Service serviceAPI = Client.getClient();
//Call<List<Errors>> loadErrorsCall = serviceAPI.readErrorsArray();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://api.textgears.com")
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
Service serviceAPI = retrofit.create(Service.class);
Call<List<Errors>> loadErrorsCall = serviceAPI.readErrors(userInput, apiKey);
loadErrorsCall.enqueue(new Callback<List<Errors>>() {
@Override
public void onResponse(Call<List<Errors>> call, Response<List<Errors>> response) {
errors = new ArrayList<>(response.body());
Log.i("ORIG. ARRAY SIZE", String.valueOf(errors.size()));
if (errors != null){
for (int i = 0; i < 5; i++){
errorArrayList.add(errors.get(i));
}
Log.i("NEW ARRAY SIZE", String.valueOf(errorArrayList.size()));
}
mErrorsRecyclerView.setItemAnimator(new DefaultItemAnimator());
mErrorsRecyclerView.setAdapter(new ResultAdapter(getContext(), errorArrayList));
}
@Override
public void onFailure(Call<List<Errors>> call, Throwable t) {
Log.i("Error: ", t.getMessage());
}
});
}
}
Adapter.class
public class ResultAdapter extends RecyclerView.Adapter<ResultAdapter.ResultViewHolder>{
Context mContext;
List<Photo> photoList = new ArrayList<>();
List<Errors> errorsList = new ArrayList<>();
public ResultAdapter (Context mContext, List<Errors> errorsList){
this.errorsList = errorsList;
this.mContext = mContext;
}
@Override
public ResultViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.result_card, viewGroup, false);
return new ResultViewHolder(view);
}
@Override
public void onBindViewHolder(ResultViewHolder resultViewHolder, int i) {
Errors errors = errorsList.get(i);
resultViewHolder.mNumErrorsTextView.setText(errorsList.size());
resultViewHolder.mIdErrorTextView.setText(errors.getId());
resultViewHolder.mLengthErrorTextView.setText(errors.getLength());
resultViewHolder.mBadErrorTextView.setText(errors.getBad());
}
@Override
public int getItemCount() {
//return photoList.size();
return errorsList.size();
}
public class ResultViewHolder extends RecyclerView.ViewHolder{
TextView mNumErrorsTextView;
TextView mIdErrorTextView;
TextView mLengthErrorTextView;
TextView mBadErrorTextView;
public ResultViewHolder(@NonNull View itemView) {
super(itemView);
//ButterKnife.bind(this, itemView);
mNumErrorsTextView = (TextView) itemView.findViewById(R.id.NumofErrorsTextView);
mIdErrorTextView = (TextView) itemView.findViewById(R.id.ErrorIdTextView);
mLengthErrorTextView = (TextView) itemView.findViewById(R.id.ErrorLengthTextView);
mBadErrorTextView = (TextView) itemView.findViewById(R.id.ErrorBadTextView);
}
}
}