Ошибка преобразования информации о просмотре страницы в json
Я успешно получил Viewpager, работающий с помощью [из этого урока:http://www.androidbegin.com/tutorial/android-viewpager-gallery-images-and-texts-tutorial/]
Теперь я пытаюсь преобразовать данные из окна просмотра в дату, полученную из файла json на веб-сайте. Я использовал код для получения обычного списка, и он работает нормально, но проблема, которую я не могу определить с помощью адаптера ViewPager, вызывает эту ошибку:
Error:(159, 31) error: constructor ViewPagerAdapter in class ViewPagerAdapter cannot be applied to given types;
required: Context,String[],String[],String[],int[]
found: Activity,ArrayList<HashMap<String,String>>,String,String,String,String
reason: actual and formal argument lists differ in length
Вот код в фрагменте:
public class WhatsHotFragment extends Fragment {
private TextView DateView;
private ImageView PhotoView;
private TextView whereView;
private TextView infoView;
ViewPager viewPager;
PagerAdapter adapter;
public WhatsHotFragment() {}
private static final String TAG_OS = "results";
private static final String where = "name";
private static final String date = "dates";
private static final String information = "info";
private static final String flag = "avatar_url";
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
private static String url = "http://celebirious.com/bey/data/style.json";
JSONArray android = null;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_whats_hot, null);
oslist = new ArrayList<HashMap<String, String>>();
new JSONParse().execute();
return v;
}
class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
infoView = (TextView) getActivity().findViewById(R.id.info);
whereView = (TextView) getActivity().findViewById(R.id.where);
DateView = (TextView) getActivity().findViewById(R.id.date);
PhotoView = (ImageView) getActivity().findViewById(R.id.photo);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
android = json.getJSONArray(TAG_OS);
for(int i = 0; i < android.length(); i++){
JSONObject c = android.getJSONObject(i);
// Storing JSON item in a Variable
String infoView = c.getString(information);
String dateView = c.getString(date);
String whereView = c.getString(where);
String PhotoView = c.getString(flag);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(information, infoView);
map.put(date, dateView);
map.put(whereView, where);
map.put(PhotoView, flag);
oslist.add(map);
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
adapter = new ViewPagerAdapter(getActivity(), oslist, where, date, information, flag);
viewPager.setAdapter(adapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
А в ViewPagerAdapter, вот код:
public class ViewPagerAdapter extends PagerAdapter {
// Declare Variables
Context context;
String[] where;
String[] date;
String[] information;
int[] flag;
LayoutInflater inflater;
public ViewPagerAdapter(Context context, String[] where, String[] date,
String[] information, int[] flag) {
this.context = context;
this.where = where;
this.date = date;
this.information = information;
this.flag = flag;
}
@Override
public int getCount() {
return where.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// Declare Variables
TextView txtrank;
TextView txtcountry;
TextView txtpopulation;
ImageView imgflag;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.styledeets, container,
false);
// Locate the TextViews in viewpager_item.xml
txtrank = (TextView) itemView.findViewById(R.id.date);
txtcountry = (TextView) itemView.findViewById(R.id.where);
txtpopulation = (TextView) itemView.findViewById(R.id.info);
// Capture position and set to the TextViews
txtrank.setText(where[position]);
txtcountry.setText(date[position]);
txtpopulation.setText(information[position]);
// Locate the ImageView in viewpager_item.xml
imgflag = (ImageView) itemView.findViewById(R.id.photo);
// Capture position and set to the ImageView
imgflag.setImageResource(flag[position]);
// Add viewpager_item.xml to ViewPager
((ViewPager) container).addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout) object);
}
}
Я предполагаю, что это: public ViewPagerAdapter (Контекст контекста, String [] где, String [] дата, String [] информация, флаг int []) {this.context = context; this.where = где; this.date = date; this.information = информация; this.flag = flag; }
С адаптером вызывает проблему - Как это можно исправить, пожалуйста?