使用AsyncTask在带有jsonData的daimajia AndroidImageSlider中加载两个以上的图像
我正在使用with slider从使用AsyncTask在带有jsonData的daimajia AndroidImageSlider中加载两个以上的图像,android,json,android-asynctask,Android,Json,Android Asynctask,我正在使用with slider从Json数据加载三幅图像。下面是我在异步任务中尝试的内容: public class AsyncHttpTask extends AsyncTask<String, Void, Integer> { public ProgressDialog pDialog; @Override protected void onPreExecute() { super.onPreExecute
Json数据加载三幅图像。下面是我在异步任务中尝试的内容:
public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {
public ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setIndeterminate(false);
pDialog.setMessage("Loading, Please wait...");
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected Integer doInBackground(String... params) {
Integer result = 0;
HttpURLConnection urlConnection;
try {
/* forming th java.net.URL object */
URL url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
/* for Get request */
urlConnection.setRequestMethod("GET");
int statusCode = urlConnection.getResponseCode();
/* 200 represents HTTP OK */
if (statusCode == 200) {
BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
response.append(line);
}
parseResult(response.toString());
result = 1;
}else{
result = 0; //"Failed to fetch data!";
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
return result; //"Failed to fetch data!";
}
@Override
protected void onPostExecute(Integer result) {
/* Download complete. Lets update UI */
if (result == 1) {
adapter = new MyRecyclerAdapter(MainActivity.this, feedItemList);
mmRecyclerView.setAdapter(adapter);
pDialog.dismiss();
} else {
Toast.makeText(MainActivity.this, "Failed to fetch data!", Toast.LENGTH_SHORT).show();
}
}
}
"Main-header": [
{
"HeaderImg1": "http://url/Main1.jpg",
"Title": "title 1"
},
{
"HeaderImg2": "http://url/Main2.jpg",
"Title": "title 2"
},
{
"HeaderImg3": "http://url/Main2.jpg",
"Title": "title 3"
}
]
因此,我的JsonData
中有三个图像:
public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {
public ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setIndeterminate(false);
pDialog.setMessage("Loading, Please wait...");
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected Integer doInBackground(String... params) {
Integer result = 0;
HttpURLConnection urlConnection;
try {
/* forming th java.net.URL object */
URL url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
/* for Get request */
urlConnection.setRequestMethod("GET");
int statusCode = urlConnection.getResponseCode();
/* 200 represents HTTP OK */
if (statusCode == 200) {
BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
response.append(line);
}
parseResult(response.toString());
result = 1;
}else{
result = 0; //"Failed to fetch data!";
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
return result; //"Failed to fetch data!";
}
@Override
protected void onPostExecute(Integer result) {
/* Download complete. Lets update UI */
if (result == 1) {
adapter = new MyRecyclerAdapter(MainActivity.this, feedItemList);
mmRecyclerView.setAdapter(adapter);
pDialog.dismiss();
} else {
Toast.makeText(MainActivity.this, "Failed to fetch data!", Toast.LENGTH_SHORT).show();
}
}
}
"Main-header": [
{
"HeaderImg1": "http://url/Main1.jpg",
"Title": "title 1"
},
{
"HeaderImg2": "http://url/Main2.jpg",
"Title": "title 2"
},
{
"HeaderImg3": "http://url/Main2.jpg",
"Title": "title 3"
}
]
//我的JsonData没有任何问题但是
我可以做些什么来在这个滑块中显示这三个图像,如上所述JsonData
编辑:以下是我在Oncreate上使用此工具所做的工作,该工具运行良好,但我需要从加载的Json数据中获取:
mDemoSlider = (SliderLayout) findViewById(R.id.slider);
HashMap<String, String> url_maps = new HashMap<>();
url_maps.put("title1", "http://url/pic1.jpg");
url_maps.put("title2", "http://url/pic3.jpg");
url_maps.put("title3", "http://url/pic3.jpg");
for (String name : url_maps.keySet()) {
TextSliderView textSliderView = new TextSliderView(this);
// initialize a SliderLayout
textSliderView
.description(name)
.image(url_maps.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit);
//add your extra information
textSliderView.bundle(new Bundle());
textSliderView.getBundle()
.putString("extra", name);
mDemoSlider.addSlider(textSliderView);
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Right_Bottom);
mDemoSlider.setCustomAnimation(new DescriptionAnimation());
mDemoSlider.setDuration(6000);
mDemoSlider=(SliderLayout)findViewById(R.id.slider);
HashMap url_maps=新建HashMap();
url_maps.put(“标题1”http://url/pic1.jpg");
url_maps.put(“标题2”http://url/pic3.jpg");
url_maps.put(“标题3”http://url/pic3.jpg");
for(字符串名称:url\u maps.keySet()){
TextSliderView TextSliderView=新的TextSliderView(此);
//初始化幻灯片布局
文本幻灯片视图
.说明(姓名)
.image(url_maps.get(名称))
.setScaleType(BaseSliderView.ScaleType.Fit);
//添加您的额外信息
text sliderView.bundle(新bundle());
textSliderView.getBundle()
.putString(“额外”,名称);
mDemoSlider.addSlider(textSliderView);
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.右下);
setCustomAnimation(新的DescriptionAnimation());
mdemosider.setDuration(6000);
谢谢你的帮助
干杯 你应该这样做。在Asynctask的onPostExecute方法中使用此代码
arraylist = new ArrayList<HashMap<String, String>>();
JSONObject jsonResponse;
try {
jsonResponse = new JSONObject(result);
JSONArray jsonMainNode = jsonResponse.optJSONArray("Main-header");
int lengthJsonArr = jsonMainNode.length();
for(int i=0; i < lengthJsonArr; i++)
{
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
map.put(jsonChildNode.getString("Title"),jsonChildNode.getString("HeaderImg2"));
arraylist.add(map);
for(String name : map.keySet()){
TextSliderView textSliderView = new TextSliderView(MainActivity.this);
textSliderView
.description(name)
.image(map.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(MainActivity.this);
textSliderView.bundle(new Bundle());
textSliderView.getBundle()
.putString("extra", name);
mDemoSlider.addSlider(textSliderView);
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
mDemoSlider.setCustomAnimation(new DescriptionAnimation());
mDemoSlider.setDuration(4000);
mDemoSlider.addOnPageChangeListener(MainActivity.this);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
arraylist=newarraylist();
JSONObject jsonResponse;
试一试{
jsonResponse=新的JSONObject(结果);
JSONArray jsonMainNode=jsonResponse.optJSONArray(“主头”);
int lengthJsonArr=jsonMainNode.length();
for(int i=0;i
您需要一次获取3张图像,这就是您想要实现的吗?您好。因为我正在使用此滑块,我认为不需要它。请参阅我上次的编辑。我添加了加载3张图像的原始代码。但我需要使用来自JsonData的此代码,这就是我需要的。这太奇怪了!您是否要求将jsonData显示为:“主标题”:[{“HeaderImg1”:“,”标题“:”标题1“},{“HeaderImg2”:“,”标题“:”标题2“},{“HeaderImg3”:“,”标题“:”标题3“}]或者你需要在不使用HashMap的情况下循环JsonData吗?Main header
是我的Json数组。这段代码有什么奇怪之处?我需要在滑块上的每个幻灯片中显示这三个图像。。