首页 > 解决方案 > 无法在变量中设置列表行状态

问题描述

我是 android 的新手。我的应用程序从 mysql 数据库中检索数据到列表视图。在我的数据库表中有一个状态列,我也检索该值,但我无法保存到变量中。我保存状态的概念是,如果状态值=0,则绿色图像显示该行的一侧。当状态值更改时,该颜色将更改。

数据检索类

private class bookingList extends AsyncTask<String, String, Void> {

    InputStream is = null;
    String result = "";

    @Override
    protected void onPreExecute() {
        findViewById(R.id.clientloadingPanel).setVisibility(View.VISIBLE);
    }


    @Override
    protected Void doInBackground(String... params) {

        String url_select = "http://www.mybusket.com/webapi/carrental/booking/get_client_bookings.php?vclientid="+Clientid; //this clientid comes from global variable class

        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url_select);

        ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
        try {
            httpGet.setURI(new URI(url_select));

            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();

            // read content
            is = httpEntity.getContent();

        } catch (Exception e) {

            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        try {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

        } catch (Exception e) {
            // TODO: handle exception
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        try {
            lv5 = (ListView)findViewById(R.id.lv5);
            lv5.setAdapter(customClientBookingList);
            JSONObject object = new JSONObject(result);
            JSONArray jsonArray = object.getJSONArray("booking");
            for (int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject obj = jsonArray.getJSONObject(i);
                Log.d("data",""+obj);
                ClientBookingData clientBookingData = new ClientBookingData();
                clientBookingData.setBdate(obj.getString("bdate"));
                clientBookingData.setBrand(obj.getString("brand"));
                clientBookingData.setCarno(obj.getString("carno"));
                clientBookingData.setBfees(obj.getString("bfees"));
                clientBookingData.setAdvance(obj.getString("advance"));
                clientBookingData.setDue(obj.getString("due"));
                clientBookingData.setBookingid(obj.getInt("bookingid"));
                clientBookingData.setStatus(obj.getInt("status"));

                clientBookingLists.add(clientBookingData);
            }
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }



        findViewById(R.id.clientloadingPanel).setVisibility(View.GONE);
    }
}

数据集类

private int bookingid,status;
private String bdate,carno,brand,bfees,advance,due;

public ClientBookingData(){}

public int getBookingid() {
    return bookingid;
}

public void setBookingid(int bookingid) {
    this.bookingid = bookingid;
}

public int getStatus() {
    return status;
}

public void setStatus(int status) {
    this.status = status;
}

public String getBdate() {
    return bdate;
}

public void setBdate(String bdate) {
    this.bdate = bdate;
}

public String getCarno() {
    return carno;
}

public void setCarno(String carno) {
    this.carno = carno;
}

public String getBrand() {
    return brand;
}

public void setBrand(String brand) {
    this.brand = brand;
}

public String getBfees() {
    return bfees;
}

public void setBfees(String bfees) {
    this.bfees = bfees;
}

public String getAdvance() {
    return advance;
}

public void setAdvance(String advance) {
    this.advance = advance;
}

public String getDue() {
    return due;
}

public void setDue(String due) {
    this.due = due;
}

public ClientBookingData(int bookingid, int status, String bdate, String carno, String brand, String bfees, String advance, String due) {
    this.bookingid = bookingid;
    this.status = status;
    this.bdate = bdate;
    this.carno = carno;
    this.brand = brand;
    this.bfees = bfees;
    this.advance = advance;
    this.due = due;
}

适配器类

private Activity activity;
private LayoutInflater inflater;
private List<ClientBookingData> Items;

public CustomClientBookingList(){}

public CustomClientBookingList(Activity activity, List<ClientBookingData> Items) {
    this.activity = activity;
    this.Items = Items;
}


@Override
public int getCount() {
    return Items.size();
}

@Override
public Object getItem(int location) {
    return Items.get(location);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.activity_custom_client_booking_list, null,true);

    TextView bdate = (TextView)convertView.findViewById(R.id.bdate);
    TextView brand = (TextView)convertView.findViewById(R.id.brand);
    TextView carno = (TextView)convertView.findViewById(R.id.carno);
    TextView advance = (TextView)convertView.findViewById(R.id.advance);
    TextView due = (TextView)convertView.findViewById(R.id.due);
    TextView bfees = (TextView)convertView.findViewById(R.id.bfees);

    // getting data for the row
    ClientBookingData m = Items.get(position);

    // set data
    bdate.setText(m.getBdate());
    brand.setText(m.getBrand());
    carno.setText(m.getCarno());
    advance.setText(m.getAdvance());
    due.setText(m.getDue());
    bfees.setText(m.getBfees());

    return convertView;
}

每行的右侧有一个不同颜色的图像视图。根据状态值颜色显示。请帮助我。

标签: android

解决方案


你可以像下面这样简单地在你的getView()

 ClientBookingData m = Items.get(position);
if(m.getStatus()==0)
   //Your code to set Image Background
else
  //Your code to set Image Background

推荐阅读