我正在处理图像和文本滑块,该滑块使用视图分页器在滑块中显示图像和文本。在此项目的文本和图像中,数组是在应用本身中定义的。如何从JSON API加载这些值?而不是定义它,我想从json文件在线加载这些。请帮忙。
我的适配器代码
public class SlideAdapter extends PagerAdapter {
Context context;
LayoutInflater inflater;
// list of images
public int[] lst_images = {
R.drawable.image_1,
R.drawable.image_2,
R.drawable.image_3,
R.drawable.image_4
};
// list of titles
public String[] lst_title = {
"COSMONAUT",
"SATELITE",
"GALAXY",
"ROCKET"
} ;
// list of descriptions
public String[] lst_description = {
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
};
// list of background colors
public int[] lst_backgroundcolor = {
Color.rgb(55,55,55),
Color.rgb(239,85,85),
Color.rgb(110,49,89),
Color.rgb(1,188,212)
};
public SlideAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return lst_title.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view==(LinearLayout)object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.slide,container,false);
LinearLayout layoutslide = (LinearLayout) view.findViewById(R.id.slidelinearlayout);
ImageView imgslide = (ImageView) view.findViewById(R.id.slideimg);
TextView txttitle= (TextView) view.findViewById(R.id.txttitle);
TextView description = (TextView) view.findViewById(R.id.txtdescription);
layoutslide.setBackgroundColor(lst_backgroundcolor[position]);
imgslide.setImageResource(lst_images[position]);
txttitle.setText(lst_title[position]);
description.setText(lst_description[position]);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout)object);
}
}
答案 0 :(得分:0)
阅读此代码,将URL传递给此方法,然后获取响应:
private static String makeHttpRequest(URL url) throws IOException {
String jsonResponse = "";
if (url == null) {
return jsonResponse;
}
HttpURLConnection urlConnection = null;
InputStream inputStream = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.setRequestMethod("GET");
urlConnection.connect();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = urlConnection.getInputStream();
jsonResponse = readFromStream(inputStream);
} else {
Log.e(LOG_TAG, "Error response code: " + urlConnection.getResponseCode());
}
} catch (IOException e) {
Log.e(LOG_TAG, "Problem retrieving the JSON results.", e);
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
if (inputStream != null) {
inputStream.close();
}
}
return jsonResponse;
}
然后:
JSONObject baseJsonResponse = new JSONObject(jsonResponse);
JSONArray itemsArray = baseJsonResponse.getJSONArray("items");