Java 在ListView中不显示任何项目

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

我已经使用ListView显示了数据库中的自行车列表。我还使用了适配器适配器。现在,以下代码在logcat中完美地工作。执行时未发生错误。但它在listview中不显示任何项目

BikeSelection.java的代码文件

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

}