如何使用volley android实现listview
我正在开发一个应用程序,它可以抓取一个API的客户端列表,我需要在列表视图中显示它,我正在使用volley,我试图做的是以下几点,但它不起作用:如何使用volley android实现listview,android,listview,android-listview,android-volley,Android,Listview,Android Listview,Android Volley,我正在开发一个应用程序,它可以抓取一个API的客户端列表,我需要在列表视图中显示它,我正在使用volley,我试图做的是以下几点,但它不起作用: public ListView txtDisplay; @Override protected Boolean doInBackground(Void... params) { try { txtDisplay = (Listview) findViewById(R.i
public ListView txtDisplay;
@Override
protected Boolean doInBackground(Void... params) {
try {
txtDisplay = (Listview) findViewById(R.id.listView);
String url = "http://192.168.1.1/rep-mais-api/api";
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
findViewById(R.id.progressBar1).setVisibility(View.GONE);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error: " + error.getMessage());
}
})
公共列表视图txtDisplay;
@凌驾
受保护的布尔doInBackground(Void…params){
试一试{
txtDisplay=(Listview)findViewById(R.id.Listview);
字符串url=”http://192.168.1.1/rep-mais-api/api";
JsonObjectRequest JSONObjectReq=新的JsonObjectRequest(Request.Method.GET,
url,空,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
findViewById(R.id.progressBar1).setVisibility(View.GONE);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(“错误:+Error.getMessage());
}
})
ActivityMain.xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager" />
<TextView
android:id="@+id/txtDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/>
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
使用此示例解决了我的问题
import android.app.ProgressDialog;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends Activity {
private String TAG = this.getClass().getSimpleName();
private ListView lstView;
private RequestQueue mRequestQueue;
private ArrayList<NewsModel> arrNews ;
private LayoutInflater lf;
private VolleyAdapter va;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lf = LayoutInflater.from(this);
arrNews = new ArrayList<NewsModel>();
va = new VolleyAdapter();
lstView = (ListView) findViewById(R.id.listView);
lstView.setAdapter(va);
mRequestQueue = Volley.newRequestQueue(this);
String url = "http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json";
pd = ProgressDialog.show(this,"Please Wait...","Please Wait...");
try{
Thread.sleep(2000);
}catch(Exception e){
}
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG,response.toString());
parseJSON(response);
va.notifyDataSetChanged();
pd.dismiss();
; }
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG,error.getMessage());
}
});
mRequestQueue.add(jr);
}
private void parseJSON(JSONObject json){
try{
JSONObject value = json.getJSONObject("value");
JSONArray items = value.getJSONArray("items");
for(int i=0;i<items.length();i++){
JSONObject item = items.getJSONObject(i);
NewsModel nm = new NewsModel();
nm.setTitle(item.optString("title"));
nm.setDescription(item.optString("description"));
nm.setLink(item.optString("link"));
nm.setPubDate(item.optString("pubDate"));
arrNews.add(nm);
}
}
catch(Exception e){
e.printStackTrace();
}
}
class NewsModel{
private String title;
private String link;
private String description;
private String pubDate;
void setTitle(String title) {
this.title = title;
}
void setLink(String link) {
this.link = link;
}
void setDescription(String description) {
this.description = description;
}
void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
String getLink() {
return link;
}
String getDescription() {
return description;
}
String getPubDate() {
return pubDate;
}
String getTitle() {
return title;
}
}
class VolleyAdapter extends BaseAdapter{
@Override
public int getCount() {
return arrNews.size();
}
@Override
public Object getItem(int i) {
return arrNews.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder vh ;
if(view == null){
vh = new ViewHolder();
view = lf.inflate(R.layout.row_listview,null);
vh.tvTitle = (TextView) view.findViewById(R.id.txtTitle);
vh.tvDesc = (TextView) view.findViewById(R.id.txtDesc);
vh.tvDate = (TextView) view.findViewById(R.id.txtDate);
view.setTag(vh);
}
else{
vh = (ViewHolder) view.getTag();
}
NewsModel nm = arrNews.get(i);
vh.tvTitle.setText(nm.getTitle());
vh.tvDesc.setText(nm.getDescription());
vh.tvDate.setText(nm.getPubDate());
return view;
}
class ViewHolder{
TextView tvTitle;
TextView tvDesc;
TextView tvDate;
}
}
}
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.app.Activity;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.JsonObjectRequest;
导入com.android.volley.toolbox.volley;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入java.util.ArrayList;
公共类MainActivity扩展了活动{
私有字符串标记=this.getClass().getSimpleName();
私有列表视图;
私有请求队列mRequestQueue;
私人ArrayList arrNews;
私人停车场;
私人截击;
私营部门;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lf=从(此)开始的更平坦的布局;
arrNews=新的ArrayList();
va=新的截击适配器();
lstView=(ListView)findViewById(R.id.ListView);
lstView.setAdapter(va);
mRequestQueue=Volley.newRequestQueue(this);
字符串url=”http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json";
pd=ProgressDialog.show(这是“请等待…”,请等待…”);
试一试{
《睡眠》(2000年);
}捕获(例外e){
}
JsonObjectRequest jr=新的JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
Log.i(TAG,response.toString());
parseJSON(响应);
va.notifyDataSetChanged();
pd.解散();
; }
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.i(标记,error.getMessage());
}
});
mRequestQueue.add(jr);
}
私有void parseJSON(JSONObject json){
试一试{
JSONObject value=json.getJSONObject(“值”);
JSONArray items=value.getJSONArray(“items”);
对于(int i=0;i请不要发布“仅链接”答案。这会使其他用户难以访问信息,而且,由于某种原因,链接可能会变得无效(已删除),并且信息会丢失。我看到链接非常有用且很长,但是,请尝试发布对您帮助最大的部分。