Android ViewPager中的片段未刷新内容或其视图
MainActivity.javaAndroid ViewPager中的片段未刷新内容或其视图,android,android-fragments,android-listview,Android,Android Fragments,Android Listview,MainActivity.java public class MainActivity extends ActionBarActivity { Toolbar toolbar; ViewPager pager; ViewPagerAdapter adapter; SlidingTabLayout tabs; private ArrayList<String> mLanguagesArray = null; int Numboftabs
public class MainActivity extends ActionBarActivity {
Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
private ArrayList<String> mLanguagesArray = null;
int Numboftabs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if (extras != null) {
mLanguagesArray = new ArrayList<String>();
mLanguagesArray.addAll(extras.getStringArrayList("languages"));
Numboftabs = mLanguagesArray.size();
}
}
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
adapter = new ViewPagerAdapter(getSupportFragmentManager(),
mLanguagesArray, Numboftabs, MainActivity.this);
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setViewPager(pager);
tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
refreshListInFragment(arg0);
}
});
}
protected void refreshListInFragment(int position) {
String currentLanguage = mLanguagesArray.get(position);
FragmentManager fm = getSupportFragmentManager();
ListviewFragment fragment = (ListviewFragment) fm
.findFragmentById(R.id.pager);
fragment.loadListview(currentLanguage);
}
}
公共类MainActivity扩展了ActionBarActivity{
工具栏;
查看寻呼机;
ViewPagerAdapter适配器;
滑动布局选项卡;
private ArrayList mLanguagesArray=null;
int-Numboftabs;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
如果(savedInstanceState==null){
Bundle extras=getIntent().getExtras();
如果(附加值!=null){
mLanguagesArray=新数组列表();
mLanguagesArray.addAll(额外的getStringArrayList(“语言”);
Numboftabs=mLanguagesArray.size();
}
}
工具栏=(工具栏)findViewById(R.id.tool\u栏);
设置支持操作栏(工具栏);
getSupportActionBar().setIcon(R.drawable.ic_启动器);
适配器=新的ViewPagerAdapter(getSupportFragmentManager(),
mLanguagesArray,NumberOfTabs,main活动。此);
pager=(ViewPager)findViewById(R.id.pager);
寻呼机设置适配器(适配器);
//辅助滑动选项卡布局视图
tabs=(slidengtablayout)findviewbyd(R.id.tabs);
tabs.setViewPager(寻呼机);
tabs.setOnPageChangeListener(新建ViewPager.OnPageChangeListener()){
@凌驾
公共无效onPageScrollStateChanged(int arg0){
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
}
@凌驾
已选择页面上的公共无效(int arg0){
refreshListInFragment(arg0);
}
});
}
受保护的无效刷新列表项(内部位置){
字符串currentLanguage=mLanguagesArray.get(位置);
FragmentManager fm=getSupportFragmentManager();
ListviewFragment片段=(ListviewFragment)fm
.findFragmentById(R.id.pager);
loadListview(currentLanguage);
}
}
ViewPagerAdapter.java
import java.util.ArrayList;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
ArrayList<String> Titles;
int NumbOfTabs;
Context mContext;
public ViewPagerAdapter(FragmentManager fm,
ArrayList<String> mLanguagesArray, int mNumbOfTabsumb,
Context context) {
super(fm);
Titles = new ArrayList<String>();
this.Titles = mLanguagesArray;
this.NumbOfTabs = mNumbOfTabsumb;
this.mContext = context;
}
@Override
public Fragment getItem(int position) {
ListviewFragment listfragment = new ListviewFragment(mContext);
return listfragment;
}
@Override
public CharSequence getPageTitle(int position) {
return Titles.get(position);
}
@Override
public int getCount() {
return NumbOfTabs;
}
}
@Override
public Fragment getItem(int position) {
Bundle args = new Bundle();
args.putString("language", Titles.get(position));
ListviewFragment f = new ListviewFragment(mContext);
f.setArguments(args);
return f;
}
import java.util.ArrayList;
导入android.content.Context;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentStatePagerAdapter;
公共类ViewPagerAdapter扩展了FragmentStatePagerAdapter{
数组列表标题;
int-NumbOfTabs;
语境;
公共视图页面RADAPTER(碎片管理器fm,
阵列列表mLanguagesArray,位于塔本巴的内蒙,
上下文(上下文){
超级(fm);
Titles=新的ArrayList();
this.Titles=mLanguagesArray;
this.NumbOfTabs=mNumbOfTabsumb;
this.mContext=上下文;
}
@凌驾
公共片段getItem(int位置){
ListviewFragment listfragment=新ListviewFragment(mContext);
返回列表片段;
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题。获取(位置);
}
@凌驾
public int getCount(){
回程制动;
}
}
ListviewFragment.java
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
public class ListviewFragment extends Fragment {
ProgressBar progressbar;
ListView list;
ArrayList<RStore> mRstoreList = null;
RadioListAdapter adapter;
Context mContext;
Button tryagain;
String mCurrentLanguage = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.listviewfragment, container, false);
progressbar = (ProgressBar) v.findViewById(R.id.progressbar);
list = (ListView) v.findViewById(R.id.listview);
if (ListviewFragment.this.isMenuVisible()) {
if (mRstoreList == null) {
loadListview("English");
}
}
return v;
}
public void loadListview(final String currentlanguage) {
this.mCurrentLanguage = currentlanguage;
mRstoreList = new ArrayList<RStore>();
new AsyncTask<Void, Void, String>() {
private String jsonStr;
@Override
protected void onPreExecute() {
list.setVisibility(View.GONE);
progressbar.setVisibility(View.VISIBLE);
tryagain.setVisibility(View.GONE);
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0) {
try {
String URL = ServiceUrls.MUSIC_PHP;
CustomHttpClient sh = new CustomHttpClient();
JSONObject jsonobjpost = new JSONObject();
jsonobjpost.put("languages", currentlanguage);
jsonStr = sh.makeServiceCall(URL, CustomHttpClient.POST,
jsonobjpost.toString());
System.out.println("MUSIC_PHP_Response " + jsonStr);
} catch (Exception e) {
e.printStackTrace();
}
return jsonStr;
}
@Override
protected void onPostExecute(String result) {
if (result == null || result.trim().equalsIgnoreCase("null")
|| result.trim().equalsIgnoreCase("")) {
progressbar.setVisibility(View.GONE);
super.onPostExecute(result);
return;
}
try {
String DUMMYJASON = result.toString();
JSONObject jsonObject = new JSONObject(DUMMYJASON);
JSONArray jsonArray = jsonObject.getJSONArray("Language");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
String id = obj.getString("id");
String language = obj.getString("language");
String tittle = obj.getString("Tittle");
String link = obj.getString("link");
RStore storecon = new RStore();
storecon.setId(id);
storecon.setLanguage(language);
storecon.setTitle(tittle);
storecon.setLink(link);
mRstoreList.add(storecon);
}
} catch (JSONException e) {
e.printStackTrace();
}
adapter = new RadioListAdapter(mContext, mRstoreList);
list.setAdapter(adapter);
list.setVisibility(View.VISIBLE);
progressbar.setVisibility(View.GONE);
super.onPostExecute(result);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
public ListviewFragment(Context context) {
this.mContext = context;
}
}
private void getarugs() {
Bundle args = getArguments();
mCurrentLanguage = args.getString("language");
loadListview(mCurrentLanguage);
}
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.ProgressBar;
公共类ListviewFragment扩展了片段{
ProgressBar ProgressBar;
列表视图列表;
ArrayList mRstoreList=null;
放射适配器;
语境;
按钮tryagain;
字符串mCurrentLanguage=null;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.listviewfragment,容器,false);
progressbar=(progressbar)v.findViewById(R.id.progressbar);
列表=(ListView)v.findViewById(R.id.ListView);
if(ListviewFragment.this.isMenuVisible()){
if(mRstoreList==null){
loadListview(“英文”);
}
}
返回v;
}
public void loadListview(最终字符串currentlanguage){
this.mCurrentLanguage=currentlanguage;
mRstoreList=newarraylist();
新建异步任务(){
私有字符串jsonStr;
@凌驾
受保护的void onPreExecute(){
list.setVisibility(View.GONE);
progressbar.setVisibility(View.VISIBLE);
tryagain.setVisibility(View.GONE);
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(无效…arg0){
试一试{
字符串URL=serviceURL.MUSIC\u PHP;
CustomHttpClient sh=新CustomHttpClient();
JSONObject jsonobjpost=新的JSONObject();
jsonobjpost.put(“语言”,currentlanguage);
jsonStr=sh.makeServiceCall(URL,CustomHttpClient.POST,
jsonobjpost.toString());
System.out.println(“MUSIC\u PHP\u Response”+jsonStr);
}捕获(例外e){
e、 printStackTrace();
}
返回jsonStr;
}
@凌驾
受保护的void onPostExecute(字符串结果){
if(result==null | | result.trim().equalsIgnoreCase(“null”)
||result.trim().equalsIgnoreCase(“”){
progressbar.setVisibility(View.GONE);
super.onPostExecute(结果);
返回;
}
试一试{
字符串DUMMYJASON=result.toString();
JSONObject JSONObject=新的JSONObject(DUMMYJASON);
JSONArray JSONArray=jsonObject.getJSONArray(“语言”);
对于(int i=0;i