gpt4 book ai didi

android - 使用AsyncTask在daimajia-AndroidImageSlider中加载两个以上的图片与jsonData

转载 作者:行者123 更新时间:2023-11-29 20:42:26 25 4
gpt4 key购买 nike

我正在使用 https://github.com/daimajia/AndroidImageSlider带有用于三张图片的 slider 。这是我在我的AsyncTask 中尝试从Json Data 加载三张图片的方法:

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();

}
}
}

当然,为了加载它,我们需要在 Oncreate 上使用它:

final String url = "http://url/Data.json"; //json data url
new AsyncHttpTask().execute(url); //execute the json data

所以,我的 JsonData 中有三张图片:

"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 所示,如何在 slider 中显示这三个图像?

编辑:这是我在我的 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);

感谢任何帮助。

干杯!

最佳答案

这就是你应该做的。在 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();
}


}

关于android - 使用AsyncTask在daimajia-AndroidImageSlider中加载两个以上的图片与jsonData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30829945/

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