0
ブックマークの共有設定にPDFページを追加するためのコアを書きましたが、画像をクリックしても画像が変更されたりページ番号がブックマークリストに追加されることはありません。Androidブックマークページをクリックすると画像が表示されない
以下は私のコードです。エラーは表示されず、イメージはクリックされますが、ページ番号はブックマークリストのスピナーに追加されません。
タスクのためにテキストビューを使用する前に、うまくいきましたが、今はページにタグを付ける、またはタグを解除するときにタグイメージを変更したいと思っています。
@EActivity(R.layout.activity_main)
@OptionsMenu(R.menu.actionbar)
public class PDFViewActivity extends SherlockActivity implements OnPageChangeListener, View.OnClickListener {
public static final String SAMPLE_FILE = "myfile.pdf";
public static final String KEY_BOOKMARKS = "bookmarks_pages";
@ViewById
PDFView pdfView;
@NonConfigurationInstance
String pdfName = SAMPLE_FILE;
@NonConfigurationInstance
Integer pageNumber = 1;
SharedPreferences sharedpreferences;
public static final String mypreference = "mypref";
public static final String Name = "nameKey";
public static final String Email = "emailKey";
Spinner bookmarkSp;
ArrayAdapter<String> dataAdapter;
private final int TotalPages = 57;
@AfterViews
void afterViews() {
sharedpreferences = getSharedPreferences(mypreference,
Context.MODE_PRIVATE);
display(pdfName, false);
}
int check = 0;
private void display(String assetFileName, boolean jumpToFirstPage) {
if (jumpToFirstPage) pageNumber = 1;
int x = TotalPages;
int[] page_seq = new int[TotalPages];
for (int i = 0; i < TotalPages; i++) {
page_seq[i] = --x;
Log.d("testdesp", "" + page_seq[i]);
}
// .pages(2,1,0)
pdfView.fromAsset(assetFileName)
.defaultPage(TotalPages)
.pages(page_seq)
.onLoad(new OnLoadCompleteListener() {
@Override
public void loadComplete(int nbPages) {
((TextView) findViewById(R.id.tv_total_page)).setText("/ " + pdfView.getPageCount());
}
})
.onPageChange(this)
.load();
findViewById(R.id.btn_go).setOnClickListener(this);
findViewById(R.id.tag_btn).setOnClickListener(this);
bookmarkSp = (Spinner) findViewById(R.id.sp_bookmark_list);
List<String> list = new ArrayList<String>();
String pages = sharedpreferences.getString(KEY_BOOKMARKS, "");
String[] split = pages.split(",");
list.add("");
for (String val : split)
if (val.length() > 0) {
int value = Integer.parseInt(val);
// value = pdfView.getPageCount() - (value - 1);
value = TotalPages - (value - 1);
list.add("" + value);
}
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bookmarkSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (++check > 1) {
String val = (String) parent.getItemAtPosition(position);
if (val.length() > 0) {
int value = Integer.parseInt(val);
value = pdfView.getPageCount() - (value - 1);
pdfView.jumpTo(value);
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
bookmarkSp.setAdapter(dataAdapter);
}
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
((EditText) findViewById(R.id.et_page_number)).setText(pageCount - (pageNumber - 1) + "");
if (check(page))
((ImageView) findViewById(R.id.tag_btn)).setImageResource(R.drawable.tagged);
else
((ImageView) findViewById(R.id.tag_btn)).setImageResource(R.drawable.untaged);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
private boolean displaying(String fileName) {
return fileName.equals(pdfName);
}
@Override
public void onClick(View view) {
view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_out));
switch (view.getId()) {
case R.id.btn_go:
int page = Integer.parseInt(((EditText) findViewById(R.id.et_page_number)).getText().toString());
page = TotalPages - (page - 1);
pdfView.jumpTo(page);
break;
case R.id.tag_btn:
if (((ImageView) findViewById(R.id.tag_btn)).getDrawable().getConstantState() == getResources().getDrawable(R.drawable.untaged).getConstantState()) {
sharedpreferences.edit().putString(KEY_BOOKMARKS, sharedpreferences.getString(KEY_BOOKMARKS, "") + pageNumber + ",").commit();
((ImageView) findViewById(R.id.tag_btn)).setImageResource(R.drawable.tagged);
dataAdapter.add(pdfView.getPageCount() - (pageNumber - 1) + "");
dataAdapter.notifyDataSetChanged();
} else if (((ImageView) findViewById(R.id.tag_btn)).getDrawable().getConstantState() == getResources().getDrawable(R.drawable.tagged).getConstantState()) {
sharedpreferences.edit().putString(KEY_BOOKMARKS, sharedpreferences.getString(KEY_BOOKMARKS, "").replace(pageNumber + ",", "")).commit();
((ImageView) findViewById(R.id.tag_btn)).setImageResource(R.drawable.untaged);
dataAdapter.remove(TotalPages - (pageNumber - 1) + "");
dataAdapter.notifyDataSetChanged();
}
break;
}
}
boolean check(int page) {
String number = sharedpreferences.getString(KEY_BOOKMARKS, "");
Log.d("testdisp", pdfView.getPageCount() + " ** " + number + " ****" + number.contains(page + ","));
return number.contains(page + ",");
}
}