Вы можете вызывать это несколько раз, поскольку это асинхронный обратный вызов с использованием модификации Square
public void Prepare_Review_data() {
try {
if (token != null) {
if (isConnected()) try {
loading = ProgressHUD.show(getContext(), "Loading Reviews", true, false, Heizolscout_Reviews.this);
Call<JsonElement> call = apiService.Heizolscout_Reviews("Bearer " + token.getAccessToken());
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
Log.d("History Information", response.toString());
loading.dismiss();
if (response.code() == 401) {
Fragment frag = new Heizolscout_Login();
if (frag != null) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.sacreenarea, frag);
ft.commit();
}
} else if (response.code() == 200) {
try {
Gson gson = new Gson();
Type listType = new TypeToken<List<Review_Model>>(){}.getType();
ArrayList<Review_Model>noti = gson.fromJson(response.body(), listType);
Log.d("Notification success",Review_models.size()+"");
if (noti.size()>0){
for (Review_Model n:noti){
Review_models.add(n);
}
Review_Adapter.notifyDataSetChanged();
}else {
Toast.makeText(getActivity(),getString(R.string.review_no_list_string), Toast.LENGTH_LONG).show();
}
Review_Adapter.notifyDataSetChanged();
} catch (Exception e) {
Log.d("Error Line Number", Log.getStackTraceString(e));
}
try {
Log.d("History error", response.body().getAsJsonObject().get("error").toString());
if (!response.body().getAsJsonObject().get("error").isJsonNull()) {
Show_Alert(getString(R.string.open_email), response.body().getAsJsonObject().get("error").toString(), getString(R.string.ok), getString(R.string.normal));
}
} catch (Exception e) {
Log.d("Error Line Number", Log.getStackTraceString(e));
}
} else if (response.code() == 422) {
Show_Alert(getString(R.string.invalid_tittle), getString(R.string.invalid_tittle_details), getString(R.string.ok), getString(R.string.normal));
} else {
Show_Alert(getString(R.string.error_tittle), getString(R.string.error_tittle_details), getString(R.string.ok), getString(R.string.normal));
}
}
@Override
public void onFailure(Call<JsonElement> call, Throwable t) {
// Log error here since request failed
Log.e("Error", t.toString());
Show_Alert(getString(R.string.error_tittle), getString(R.string.error_tittle_details), getString(R.string.ok), getString(R.string.normal));
loading.dismiss();
}
});
} catch (Exception e) {
loading.dismiss();
Log.d("Error Line Number", Log.getStackTraceString(e));
}
else {
Show_Alert(getString(R.string.internet_tittle), getString(R.string.internet_details), getString(R.string.ok), getString(R.string.nointernet));
}
} else {
Fragment frag = new Heizolscout_Login();
if (frag != null) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.sacreenarea, frag);
ft.commit();
}
}
} catch (Exception e) {
Log.d("Error Line Number", Log.getStackTraceString(e));
}
}
You want to use the listings
package. Is there a specific thing you want to do with it, or are you just asking which package works best in general? I've never encountered any big problems with listings
, though getting it to do Exactly What I Want is sometimes tricky (it's LaTeX; to expect anything else would be folly).
Edit (to address your edit): intelligent page breaking might be problematic; it's certainly beyond my abilities. listings
might be able to do it with explicit markup (escape to LaTeX and insert a negative page break penalty at appropriate place; likely macro-izable), but I don't think listings
can do it automatically, and I doubt LGrind can do it either. You might have better luck searching or asking on a LaTeX-specific list (comp.text.tex
on Usenet is a great place to try), but page breaking in TeX has never been as good as line breaking, and so I wouldn't hold out too much hope, unfortunately.
Я использую пакет листингов
, но в основном для фрагментов кода. Мне не нужно беспокоиться о разрывах страниц в целом. Одна из замечательных особенностей списков
- это высокая степень гибкости. Например, я не пишу с заглавной буквы свой SQL, но я могу напечатать свои списки с заглавными словами:
\makeatletter
\newcommand{\lstuppercase}{\uppercase\expandafter{\expandafter\lst@token
\expandafter{\the\lst@token}}}
\newcommand{\lstlowercase}{\lowercase\expandafter{\expandafter\lst@token
\expandafter{\the\lst@token}}}
\makeatother
\lstdefinestyle{Oracle}{basicstyle=\ttfamily,
keywordstyle=\lstuppercase,
emphstyle=\itshape,
showstringspaces=false,
}
И определить больше ключевых слов по мере необходимости:
\lstdefinelanguage[Oracle]{SQL}[]{SQL}{
morekeywords={ACCESS, MOD, NLS_DATE_FORMAT, NVL, REPLACE, SYSDATE,
TO_CHAR, TO_NUMBER, TRUNC},
}
Чтобы использовать эти определения:
\lstset{language=[Oracle]SQL,
style=Oracle,
}
Если бы я распечатывая большие куски кода, я бы не беспокоился о разрывах страниц или написал бы препроцессор, чтобы разделить код перед передачей его в LaTeX
.