Java 在ListView中不显示任何项目
我已经使用ListView显示了数据库中的自行车列表。我还使用了适配器适配器。现在,以下代码在logcat中完美地工作。执行时未发生错误。但它在listview中不显示任何项目 BikeSelection.java的代码文件Java 在ListView中不显示任何项目,java,android,listview,adapter,Java,Android,Listview,Adapter,我已经使用ListView显示了数据库中的自行车列表。我还使用了适配器适配器。现在,以下代码在logcat中完美地工作。执行时未发生错误。但它在listview中不显示任何项目 BikeSelection.java的代码文件 package com.example.mjla; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.v
package com.example.mjla;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class AdapterBike extends ArrayAdapter<String> {
int[] ImagesBike = {};
String[] namesBike = {};
String[] brandsBike = {};
String[] typesBike = {};
String[] avgsBike = {};
String[] ratingsBike = {};
String[] idBike = {};
String[] descriptionBike = {};
String[] availableCity = {};
String[] availabilityBike = {};
String[] pricekmBike = {};
String[] pricedayBike = {};
Context c;
LayoutInflater inflater;
public AdapterBike(Context context, int[] imgs, String[] names, String[] brands, String[] types, String[] avgs, String[] ratings, String[] idBike, String[] descriptionBike, String[] availableCity, String[] availabilityBike, String[] pricekmBike, String[] pricedayBike) {
super(context, R.layout.model,names);
//TODO Auto-generated method stub
this.c = context;
this.ImagesBike = imgs;
this.namesBike = names;
this.brandsBike = brands;
this.typesBike = types;
this.avgsBike = avgs;
this.ratingsBike = ratings;
this.idBike = idBike;
this.descriptionBike = descriptionBike;
this.availableCity = availableCity;
this.availabilityBike = availabilityBike;
this.pricekmBike = pricekmBike;
this.pricedayBike = pricedayBike;
}
//INNER CLASS SHALL HOLD OUR VIEWS FOR EACH ROW
public class ViewHolder
{
ImageView imgBike;
TextView nameBike;
TextView brandBike;
TextView typeBike;
TextView avgBike;
TextView ratingBike;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
if(convertView==null)
{
inflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.model, null);
}
//OUR VIEWHOLDER OBJECT
final ViewHolder holder = new ViewHolder();
//INITIALIZE OUT VIEWS
holder.imgBike = (ImageView)convertView.findViewById(R.id.imageBike);
holder.nameBike = (TextView)convertView.findViewById(R.id.tvBikeName);
holder.brandBike = (TextView)convertView.findViewById(R.id.tvBikeBrand);
holder.typeBike = (TextView)convertView.findViewById(R.id.tvBikeType);
holder.avgBike = (TextView)convertView.findViewById(R.id.tvBikeAvgValue);
holder.ratingBike = (TextView)convertView.findViewById(R.id.tvBikeRatingValue);
//ASSIGN DATA
holder.imgBike.setImageResource(ImagesBike[position]);
holder.nameBike.setText(namesBike[position]);
holder.brandBike.setText(brandsBike[position]);
holder.typeBike.setText(typesBike[position]);
holder.avgBike.setText(avgsBike[position]);
holder.ratingBike.setText(ratingsBike[position]);
return convertView;
}
}
package com.example.mjla;
导入java.io.PrintWriter;
导入java.io.StringWriter;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入org.apache.http.NameValuePair;
导入org.apache.http.message.BasicNameValuePair;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ListView;
导入android.widget.Toast;
公共类自行车选择扩展活动{
ListView lv;
ProgressDialog;
JSONParser JSONParser=新的JSONParser();
私有静态最终字符串登录\u URL=”http://192.168.231.2/bikeSelection.php";
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
Map abc=新的HashMap();
int[]imagesBike={};
字符串[]namesBike={};
字符串[]brandsBike={};
字符串[]typesBike={};
字符串[]avgsBike={};
String[]ratingsBike={};
字符串[]idBike={};
字符串[]descriptionBike={};
字符串[]可用性={};
字符串[]availabilityBike={};
字符串[]pricekmBike={};
字符串[]pricedayBike={};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u bike\u selection);
试一试{
lv=(ListView)findViewById(R.id.listViewId);
新建FetchingBikeData().execute();
if(abc.get(“size”)!=null)
{
int size=(整数)abc.get(“size”);
imagesBike=新的整数[大小];
namesBike=新字符串[大小];
brandsBike=新字符串[大小];
typesBike=新字符串[大小];
avgsBike=新字符串[大小];
ratingsBike=新字符串[大小];
idBike=新字符串[大小];
descriptionBike=新字符串[大小];
可用性=新字符串[大小];
availabilityBike=新字符串[大小];
pricekmBike=新字符串[大小];
pricedayBike=新字符串[大小];
如果(abc.get(“imagesBike”)!=null和abc.get(“namesBike”)!=null和abc.get(“brandsBike”)!=null和abc.get(“typesBike”)!=null和abc.get(“avgsBike”)!=null和abc.get(“idBike”)!=null和abc.get(“descriptionBike”)!=null和abc.get(“availableCity”)!=null和abc.get(“availabilityBike”)!=null和abc.get(“availabilityBike”)!=null和abc.get(“pricebike”)!=null&&abc.get(“pricedayBike”)!=null){
this.imagesBike=(int[])abc.get(“imagesBike”);
this.namesBike=(字符串[])abc.get(“namesBike”);
this.brandsBike=(字符串[])abc.get(“brandsBike”);
this.typesBike=(字符串[])abc.get(“typesBike”);
this.avgsBike=(字符串[])abc.get(“avgsBike”);
this.ratingsBike=(字符串[])abc.get(“ratingsBike”);
this.idBike=(字符串[])abc.get(“idBike”);
this.descriptionBike=(字符串[])abc.get(“descriptionBike”);
this.availableCity=(字符串[])abc.get(“availableCity”);
this.availabilityBike=(字符串[])abc.get(“availabilityBike”);
this.pricekmBike=(字符串[])abc.get(“pricekmBike”);
this.pricedayBike=(字符串[])abc.get(“pricedayBike”);
}
}
日志d(“最终”,名称为[1]);
//适配器
AdapterBike adapter=新的AdapterBike(此,图像Bike,名称Bike,品牌Bike,类型Bike,avgsBike,评级Bike,idBike,描述Bike,可用性,可用性Bike,价格Kmbike,价格Daybike);
低压设置适配器(适配器);
日志d(“最终”,名称为[1]);
}
捕获(例外e)
{
StringWriter错误=新建StringWriter();
e、 printStackTrace(新的PrintWriter(错误));
Log.d(“异常”,errors.toString());
}
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//TODO自动生成的方法存根
Toast.makeText(getApplicationContext(),namesBike[position],Toast.LENGTH_SHORT).show();
}
});
}
类FetchingBikeData扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=新建进度对话框(BikeSelection.this);
pDialog.setMessage(“获取自行车数据”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
成功;
String query=“从tblbike中选择*”;
试一试{
List params=new ArrayList();
添加(新的BasicNameValuePair(“查询”,查询));
Log.d(“请求!”,“启动”);
JSONObject json=jsonParser.makeHttpRequest(登录URL,“POST”,参数);
//检查日志中的json响应
d(“已执行查询”,json.toString());
JSONArray JSONArray=json.getJSONArray(“bikes”);
int size=jsonArray.length();
imagesBike=新的整数[大小];
namesBike=新字符串[大小];
brandsBike=新字符串[大小];
typesBike=新字符串[大小];
avgsBike=新字符串[大小];
ratingsBike=新字符串[大小];
idBike=新字符串[大小];
descriptionBike=新字符串[大小];
可用性=新字符串[大小];
availabilityBike=新字符串[大小];
pricekmBike=新字符串[大小];
pricedayBike=新字符串[大小];
对于(int i=0;i新建FetchingBikeData().execute();
创建新线程并启动它。
因此,这一行下面的所有代码都是在生成数据之前执行的
package com.example.mjla;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class BikeSelection extends Activity {
ListView lv;
ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
private static final String LOGIN_URL = "http://192.168.231.2/bikeSelection.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_MESSAGE = "message";
Map<String,Object> abc = new HashMap<String,Object>();
int[] imagesBike = {};
String[] namesBike = {};
String[] brandsBike = {};
String[] typesBike = {};
String[] avgsBike = {};
String[] ratingsBike = {};
String[] idBike = {};
String[] descriptionBike = {};
String[] availableCity = {};
String[] availabilityBike = {};
String[] pricekmBike = {};
String[] pricedayBike = {};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bike_selection);
try{
lv = (ListView) findViewById(R.id.listViewId);
new FetchingBikeData().execute();
}
catch(Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
Log.d("exception",errors.toString());
}
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), namesBike[position], Toast.LENGTH_SHORT).show();
}
});
}
private void updateList() {
if(abc.get("size") != null)
{
int size = (Integer) abc.get("size");
imagesBike = new int[size];
namesBike = new String[size];
brandsBike = new String[size];
typesBike = new String[size];
avgsBike = new String[size];
ratingsBike = new String[size];
idBike = new String[size];
descriptionBike = new String[size];
availableCity = new String[size];
availabilityBike = new String[size];
pricekmBike = new String[size];
pricedayBike = new String[size];
if(abc.get("imagesBike")!=null && abc.get("namesBike")!=null && abc.get("brandsBike")!=null && abc.get("typesBike")!=null && abc.get("avgsBike")!=null && abc.get("ratingsBike")!=null && abc.get("idBike")!=null && abc.get("descriptionBike")!=null && abc.get("availableCity")!=null && abc.get("availabilityBike")!=null && abc.get("pricekmBike")!=null && abc.get("pricedayBike")!=null) {
this.imagesBike = (int[]) abc.get("imagesBike");
this.namesBike = (String[]) abc.get("namesBike");
this.brandsBike = (String[]) abc.get("brandsBike");
this.typesBike = (String[]) abc.get("typesBike");
this.avgsBike = (String[]) abc.get("avgsBike");
this.ratingsBike = (String[]) abc.get("ratingsBike");
this.idBike = (String[]) abc.get("idBike");
this.descriptionBike = (String[]) abc.get("descriptionBike");
this.availableCity = (String[]) abc.get("availableCity");
this.availabilityBike = (String[]) abc.get("availabilityBike");
this.pricekmBike = (String[]) abc.get("pricekmBike");
this.pricedayBike = (String[]) abc.get("pricedayBike");
}
}
Log.d("final", namesBike[1]);
//ADAPTER
AdapterBike adapter = new AdapterBike(this, imagesBike, namesBike, brandsBike, typesBike, avgsBike, ratingsBike, idBike, descriptionBike, availableCity, availabilityBike, pricekmBike, pricedayBike);
lv.setAdapter(adapter);
Log.d("final", namesBike[1]);
}
class FetchingBikeData extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(BikeSelection.this);
pDialog.setMessage("fetching bike data");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
int success;
String query = "select * from tblbike";
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("query", query));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);
// checking log for json response
Log.d("query Executed", json.toString());
JSONArray jsonArray = json.getJSONArray("bikes");
int size = jsonArray.length();
imagesBike = new int[size];
namesBike = new String[size];
brandsBike = new String[size];
typesBike = new String[size];
avgsBike = new String[size];
ratingsBike = new String[size];
idBike = new String[size];
descriptionBike = new String[size];
availableCity = new String[size];
availabilityBike = new String[size];
pricekmBike = new String[size];
pricedayBike = new String[size];
for(int i = 0; i<jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
namesBike[i] = jsonObject.getString("bike_name");
imagesBike[i] = getResources().getIdentifier(namesBike[i], "drawable", getPackageName());
brandsBike[i] = jsonObject.getString("bike_brand");
typesBike[i] = jsonObject.getString("bike_type");
avgsBike[i] = jsonObject.getString("bike_avg");
ratingsBike[i] = jsonObject.getString("rating");
idBike[i] = jsonObject.getString("bike_id");
descriptionBike[i] = jsonObject.getString("description");
availableCity[i] = jsonObject.getString("available_city");
availabilityBike[i] = jsonObject.getString("availability");
pricekmBike[i] = jsonObject.getString("pricekm");
pricedayBike[i] = jsonObject.getString("priceday");
Log.d("Bike Name Fteched", namesBike[i]);
Log.d("Bike Image",""+imagesBike[i]) ;
}
abc.put("size", size);
abc.put("imagesBike", imagesBike);
abc.put("namesBike", namesBike);
abc.put("brandsBike", brandsBike);
abc.put("typesBike", typesBike);
abc.put("avgsBike", avgsBike);
abc.put("ratingsBike", ratingsBike);
abc.put("idBike", idBike);
abc.put("descriptionBike", descriptionBike);
abc.put("availableCity", availableCity);
abc.put("availabilityBike", availabilityBike);
abc.put("pricekmBike", pricekmBike);
abc.put("pricedayBike", pricedayBike);
// success tag for json
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.d("Successfully Data fetched!", json.toString());
return json.getString(TAG_MESSAGE);
}else{
return json.getString(TAG_MESSAGE);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String message) {
pDialog.dismiss();
if (message != null){
Toast.makeText(BikeSelection.this, message, Toast.LENGTH_LONG).show();
updateList()
}
}
}
}