2017-09-17 17 views
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 + ","); 
    } 
} 

答えて

0

私は描画可能リソース

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_checked="true" android:drawable="@drawable/tagged" /> 
     <item android:state_checked="false" android:drawable="@drawable/untaged" /> 
    </selector> 

と私のJavaアクティビティコードの変化の下に作られたを追加することで、私の問題を解決しました。

if (((CheckBox) findViewById(R.id.chk_tag)).isChecked()) { 
        sharedpreferences.edit().putString(KEY_BOOKMARKS, sharedpreferences.getString(KEY_BOOKMARKS, "") + pageNumber + ",").commit(); 
        ((CheckBox) findViewById(R.id.chk_tag)).setChecked(true); 


        dataAdapter.add(pdfView.getPageCount() - (pageNumber - 1) + ""); 
        dataAdapter.notifyDataSetChanged(); 
       } else { 
        sharedpreferences.edit().putString(KEY_BOOKMARKS, sharedpreferences.getString(KEY_BOOKMARKS, "").replace(pageNumber + ",", "")).commit(); 
        ((CheckBox) findViewById(R.id.chk_tag)).setChecked(false); 
} 
関連する問題