2017-04-19 38 views
-1

您好需要帮助一个类试图找出如何创建一个片段中的第一个和最后一个按钮,将跳转到ViewPager中的第一个项目和最后一个项目在ViewPager中,我对如何实现有点失落。这是片段。我需要为我的ViewPager创建第一个和最后一个按钮

public class CrimeFragment extends Fragment { 

private static final String ARG_CRIME_ID = "crime_id"; 
private static final String DIALOG_DATE = "DialogDate"; 
private static final int REQUEST_DATE = 0; 

private Crime mCrime; 
private EditText mTitleField; 
private Button mDateButton; 
private CheckBox mSolvedCheckBox; 
private Spinner mSpinner; 
private Button mFirstButton; 
private Button mLastButton; 


public static CrimeFragment newInstance(UUID crimeId) { 
    Bundle args = new Bundle(); 
    args.putSerializable(ARG_CRIME_ID, crimeId); 

    CrimeFragment fragment = new CrimeFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode != Activity.RESULT_OK) { 
     return; 
    } 
    if (requestCode == REQUEST_DATE) { 
     Date date = 
       (Date) data.getSerializableExtra(DatePickerFragment.EXTRA_DATE); 
     mCrime.setDate(date); 
     updateDate(); 
    } 
} 

private void updateDate() { 
    mDateButton.setText(mCrime.getDate().toString()); 
} 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    UUID crimeId = (UUID) getArguments().getSerializable(ARG_CRIME_ID); 
    mCrime = CrimeLab.get(getActivity()).getCrime(crimeId); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_crime, container, false); 

    mTitleField = (EditText)v.findViewById(R.id.crime_title); 
    mTitleField.setText(mCrime.getTitle()); 
    mTitleField.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(
      CharSequence s, int start, int count, int after) { 

     } 
     @Override 
     public void onTextChanged(
      CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

    mDateButton = (Button) v.findViewById(R.id.crime_date); 
    updateDate(); 
    mDateButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentManager manager = getFragmentManager(); 
      DatePickerFragment dialog = DatePickerFragment.newInstance(mCrime.getDate()); 
      dialog.setTargetFragment(CrimeFragment.this, REQUEST_DATE); 
      dialog.show(manager, DIALOG_DATE); 
     } 
    }); 

    mSpinner = (Spinner) v.findViewById(R.id.crime_severity); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(), 
      R.array.severity_array, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    mSpinner.setAdapter(adapter); 

    mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
      mCrime.setSeverity((String) mSpinner.getSelectedItem()); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 

     } 
    }); 

    mSolvedCheckBox = (CheckBox) v.findViewById(R.id.crime_solved); 
    mSolvedCheckBox.setChecked(mCrime.isSolved()); 
    mSolvedCheckBox.setOnCheckedChangeListener(
      new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
        mCrime.setSolved(isChecked); 
       } 
    }); 

    mFirstButton = (Button) v.findViewById(R.id.first_crime_button); 
    mFirstButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

    mLastButton = (Button) v.findViewById(R.id.last_crime_button); 
    mLastButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 




    return v; 
} 

} 

以下是ViewPager的活动。

public class CrimePagerActivity extends FragmentActivity{ 

private static final String EXTRA_CRIME_ID = "com.martin.android.criminalintent.crime_id"; 

private ViewPager mViewPager; 
private List<Crime> mCrimes; 


public static Intent newIntent(Context packageContext, UUID crimeId) { 
    Intent intent = new Intent(packageContext, CrimePagerActivity.class); 
    intent.putExtra(EXTRA_CRIME_ID, crimeId); 
    return intent; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_crime_pager); 

    UUID crimeId = (UUID) getIntent().getSerializableExtra(EXTRA_CRIME_ID); 

    mViewPager = (ViewPager)  findViewById(R.id.activity_crime_pager_view_pager); 
    mCrimes = CrimeLab.get(this).getCrimes(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 

    mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) { 

     @Override 
     public Fragment getItem(int position) { 
      Crime crime = mCrimes.get(position); 
      return CrimeFragment.newInstance(crime.getId()); 
     } 

     @Override 
     public int getCount() { 
      return mCrimes.size(); 
     } 
    }); 

    for (int i = 0; i < mCrimes.size(); i++) { 
     if (mCrimes.get(i).getId().equals(crimeId)) { 
      mViewPager.setCurrentItem(i); 
      break; 
     } 
    } 
} 
} 

对于第一个按钮我很确定我只需要将项目设置为0?对于最后一个按钮,我需要设置项目大小 - 1只是不知道该怎么做。

+0

使用viewpager的onpageChangeListener –

+0

只需使用setCurrentItem(页面的位置)方法在特定页面上设置即可。 –

回答

-1

创建两个按钮和点击设置

viewPager.setCurrentItem(0); // for top 

viewPager.setCurrentItem(mCrimes.size()); // for last 
0

确定这是我被老师给柜面有人有兴趣一个答案。

mFirstButton = (Button) v.findViewById(R.id.first_crime_button); 
    mFirstButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ViewPager pager = (ViewPager) getActivity().findViewById(R.id.activity_crime_pager_view_pager); 
      pager.setCurrentItem(0); 

     } 
    }); 

    mLastButton = (Button) v.findViewById(R.id.last_crime_button); 
    mLastButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ViewPager pager = (ViewPager) getActivity().findViewById(R.id.activity_crime_pager_view_pager); 
      pager.setCurrentItem(CrimeLab.get(getActivity()).getCrimes().size()-1); 

     } 
    }); 
0
  1. 在你CrimePagerActivity,写两个方法的跳转到ViewPager first页面和页面last

CrimePagerActivity.java:

public void jumpToFirstPage() { 
     mViewPager.setCurrentItem(0); 
    } 

    public void jumpToLastPage() { 
     mViewPager.setCurrentItem(mCrimes.size() - 1); 
    } 
  • 呼叫的那些方法的从mFirstButtonmLastButton点击监听方法:
  • CrimeFragment.java:

    mFirstButton = (Button) v.findViewById(R.id.first_crime_button); 
         mFirstButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          ((CrimePagerActivity)getActivity()).jumpToFirstPage(); 
         } 
        }); 
    
        mLastButton = (Button) v.findViewById(R.id.last_crime_button); 
         mLastButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          ((CrimePagerActivity)getActivity()).jumpToLastPage(); 
         } 
        }); 
    

    希望这会很好地工作。

    相关问题