jsonArray请求没有响应[关闭]
Posted
技术标签:
【中文标题】jsonArray请求没有响应[关闭]【英文标题】:No response from jsonArray request [closed] 【发布时间】:2017-12-07 13:31:35 【问题描述】:我正在尝试从 android 获取数据到自定义 ListView,但我无法获取!请帮忙
我的 JSON:_
"College":[
"Name":"NITK",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\nitk.jpg"
,
"Name":"IITR",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitr.jpg"
,
"Name":"NITT",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\nitt.jpg"
,
"Name":"IITB",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitb.png"
,
"Name":"IITG",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitg.png"
,
"Name":"IITD",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitd.png"
,
"Name":"BITS",
"Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\bits.png"
]
代码:-
public class MainActivity extends AppCompatActivity
private List<College> listcollege;
//Creating Views
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initializing Views
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
listcollege = new ArrayList<>();
getData();
private void getData()
//Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);
//Creating a json array request
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL,
new Response.Listener<JSONArray>()
@Override
public void onResponse(JSONArray response)
//Dismissing progress dialog
Toast.makeText(MainActivity.this, "sachin", Toast.LENGTH_SHORT).show();
loading.dismiss();
//calling method to parse json array
parseData(response);
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
);
//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(jsonArrayRequest);
public void parseData(JSONArray array)
for (int i = 0; i < array.length(); i++)
College college = new College();
JSONObject json = null;
try
json = array.getJSONObject(i);
college.setImageUrl(json.getString(Config.TAG_IMAGE_URL));
String s = (json.getString(Config.TAG_NAME));
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
college.setName(s);
catch (JSONException e)
e.printStackTrace();
listcollege.add(college);
adapter = new CardAdapter(this, listcollege);
recyclerView.setAdapter(adapter);
// adapter.notifyDataSetChanged();
日志:- 安卓监视器
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle I/OpenGLRenderer: Initialized EGL, version 1.4
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle D/OpenGLRenderer: Swap behavior 1
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle D/OpenGLRenderer: Swap behavior 0
07-04 13:02:42.702 16225-16225/com.example.sachin.volleyrecycle E/RecyclerView: No adapter attached; skipping layout
07-04 13:02:42.946 16225-16225/com.example.sachin.volleyrecycle W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
【问题讨论】:
我认为您没有创建合适的适配器来显示您的列表。请检查您的适配器类。 这不是问题!数据获取问题 Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? 我可以给你一个想法:如果你想快速解决问题 - 你必须为此付出代价。聘请开发人员来解决您的问题。如果您不想 - 改进您的问题,以便更容易理解问题所在,并耐心等待。 【参考方案1】:1. 初始化您的adapter
并将其从onCreate()
方法设置为RecyclerView
。
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initializing Views
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
listcollege = new ArrayList<>();
adapter = new CardAdapter(this, listcollege);
recyclerView.setAdapter(adapter);
getData();
2. 尝试使用JsonObjectRequest
,而不是JsonArrayRequest
:
//Creating a json object request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest (Config.DATA_URL,
new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
//Dismissing progress dialog
Toast.makeText(MainActivity.this, "sachin", Toast.LENGTH_SHORT).show();
loading.dismiss();
// College
JSONArray jsonArrayCollege = response.getJSONArray("College");
// calling method to parse json array
parseData(jsonArrayCollege);
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
);
//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(jsonObjectRequest);
3.更新parseData()
方法如下:
public void parseData(JSONArray array)
for (int i = 0; i < array.length(); i++)
College college = new College();
JSONObject json = null;
try
json = array.getJSONObject(i);
college.setImageUrl(json.getString(Config.TAG_IMAGE_URL));
String s = (json.getString(Config.TAG_NAME));
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
college.setName(s);
catch (JSONException e)
e.printStackTrace();
listcollege.add(college);
adapter.notifyDataSetChanged();
希望对你有帮助~
【讨论】:
以上是关于jsonArray请求没有响应[关闭]的主要内容,如果未能解决你的问题,请参考以下文章