gpt4 book ai didi

android 在 ViewPager 中更改 textView

转载 作者:行者123 更新时间:2023-11-29 21:14:08 25 4
gpt4 key购买 nike

我无法在 ViewPager 中设置 TextView 的 setText()。这是我的主要 Activity 课。我想更新 ViewPager 布局滑动中的 textView。

public class MainActivity extends Activity {

ViewPager myPager;

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

MyPagerAdapter adapter = new MyPagerAdapter();
myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(3);


}

@Override
protected void onResume() {
super.onResume();

// this code causes the app to crash, because baseLayout is null
View baseLayout = myPager.findViewWithTag(R.layout.hoteladdress);
//TextView bubu = (TextView) baseLayout.findViewById(R.id.bubu);
//bubu.setText("TEST");

}




private class MyPagerAdapter extends PagerAdapter {

public int getCount() {
return 3;
}

public Object instantiateItem(View collection, int position) {

LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);




int resId = 0;
switch (position) {
case 0:
resId = showHotelContact();
break;
case 1:
resId = showHotelAddress();
break;
case 2:
resId = showHotelMap();
break;
}



View view = (View) inflater.inflate(resId, null);

view.setTag(resId);

((ViewPager) collection).addView(view, 0);
return view;
}



}
public int showHotelMap()
{
int resId;
resId = R.layout.hotelmap;
return resId;
}
public int showHotelAddress()
{
int resId;
resId = R.layout.hoteladdress;
return resId;
}
public int showHotelContact()
{
int resId;
resId = R.layout.hotelcontact;
return resId;
}


}

请在 onResume 方法中找到我解释问题的注释行。

最佳答案

这已经过测试并且可以正常工作。

我已经将 3 个 View 实现为 TextView,但可以是任何布局,然后您只需要相应地进行更改即可。

public class MainActivity extends Activity {

ViewPager myPager;
MyPagerAdapter adapter;

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

adapter = new MyPagerAdapter(getLayoutInflater());
myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
adapter.notifyDataSetChanged();
}

@Override protected void onResume() {
super.onResume();

TextView hotelAddressView = adapter
.getViewAtPosition(MyPagerAdapter.POSITION_ADDRESS);
hotelAddressView.setText("modified");

}

private class MyPagerAdapter extends PagerAdapter {

public static final int POSITION_MAP = 0;
public static final int POSITION_ADDRESS = 1;
public static final int POSITION_CONTACT = 2;

private TextView hotelMapView = null;
private TextView hotelAddressView = null;
private TextView hotelContactView = null;

public MyPagerAdapter(LayoutInflater inflater) {

hotelMapView = (TextView) inflater.inflate(R.layout.hotelmap, null);
hotelAddressView = (TextView) inflater.inflate(
R.layout.hoteladdress, null);
hotelContactView = (TextView) inflater.inflate(
R.layout.hotelcontact, null);
}

public int getCount() {
return 3;
}

public TextView getViewAtPosition(int position) {
Log.d("Main", "getViewAtPosition " + position);
TextView view = null;
switch (position) {
case POSITION_MAP:
view = hotelMapView;
break;
case POSITION_ADDRESS:
view = hotelAddressView;
break;
case POSITION_CONTACT:
view = hotelContactView;
break;
}

return view;
}

public Object instantiateItem(ViewGroup collection, int position) {

View view = getViewAtPosition(position);

((ViewPager) collection).addView(view, 0);

return view;
}

@Override public void destroyItem(ViewGroup collection, int position,
Object view) {
((ViewPager) collection).removeView((TextView) view);
}

@Override public boolean isViewFromObject(View view, Object object) {
return view == ((TextView) object);
}

}
}

关于android 在 ViewPager 中更改 textView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com