我正在尝试使用视图寻呼机,如下所示
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/vpSalary"
/>
在我的java代码中,我为视图分页器设置了这些属性
vpSalary.setAdapter(new CustomPagerAdapter(getContext(),this));
vpSalary.setClipToPadding(false);
vpSalary.setPadding(330,0,330,0);
vpSalary.setCurrentItem(2);
我的适配器是
public class CustomPagerAdapter extends PagerAdapter {
String salarylist[] = {"30,000","40,000","50,000","60,000"};
private Context mContext;
private PagerCallBack mPagerCallBack;
private Fragment fragment;
public CustomPagerAdapter(Context context,Fragment fragment) {
mContext = context;
this.fragment=fragment;
mPagerCallBack= (PagerCallBack) fragment;
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
//if Length of both array's (salarylist and tipler) Always remains same then we can do code like below.
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.adapter_salary_list, collection, false);
TextView textView= (TextView) layout.findViewById(R.id.txtSalary);
textView.setTextColor(mContext.getResources().getColor(R.color.highlight_grey));
collection.addView(layout);
collection.requestFocus();
return layout;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
collection.removeView((View) view);
}
@Override
public int getCount() {
return salarylist.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public interface PagerCallBack{
void getPagerCallBack(View view);
}
}
我的问题是,如何在我的片段中获得焦点页面的视图?
我只想更改有焦点的TextView
。
答案 0 :(得分:2)
实现此目的的一种方法是将您的视图寻呼机添加到 OnPageChangeListener。当页面选择意味着在 位置更改时,onPageSelected方法更新适配器。
注意:关于如何动态更新视图寻呼机适配器请参阅this
第1步:
class CustomPagerAdapter extends PagerAdapter {
private int mCurrentPosition;
//rest of your code
void setCurrentPosition(int position) {
mCurrentPosition = position;
notifyDataSetChanged();
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
//if Length of both array's (salarylist and tipler) Always remains same then we can do code like below.
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.adapter_salary_list, collection, false);
TextView textView= (TextView) layout.findViewById(R.id.txtSalary);
if(position == mCurrentPosition) {
textView.setTextColor(highlightedTextColor);
} else {
textView.setTextColor(defaultTextColor)
}
collection.addView(layout);
collection.requestFocus();
return layout;
}
}
第2步:
CustomPagerAdapter adapter = new CustomPagerAdapter(getContext(),this);
vpSalary.setAdapter(adapter);
vpSalary.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override public void onPageSelected(int position) {
adapter.setCurrentPosition(position);
}
@Override public void onPageScrollStateChanged(int state) {
}
});