1

私のアプリケーションでは、ユーザーが家庭用製品を注文し、アプリケーションがリストビューに製品名と価格を表示します。在庫切れの製品に異なる背景を設定したいと思います。誰かが私を助けることができますか?

パブリッククラスProductsはBaseAdapterを拡張します{

public ArrayList<HashMap<String, String>> list;
Activity activity;

boolean Connection;

public Products(Activity activity,
        ArrayList<HashMap<String, String>> list) {
    super();
    this.activity = activity;
    this.list = list;
}

public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
}

public Object getItem(int position) {
    // TODO Auto-generated method stub
    return list.get(position);
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

class ViewHolder {

    TextView item_name,item_price,product_id,item_stock;


}

public View getView(final int position, View convertView,
        final ViewGroup parent) {
    // TODO Auto-generated method stub

    final ViewHolder holder;
    LayoutInflater inflater = activity.getLayoutInflater();


    if (convertView == null) {

        convertView = inflater.inflate(R.layout.submenutext, null);

        if(ITEM_AVALIABLE_QUANTITY.equalsIgnoreCase("0")){

            convertView.setBackgroundResource(R.drawable.heading);
        }
        /*else{
            convertView.setBackgroundResource(R.drawable.sub_menu);
        }*/
        holder = new ViewHolder();

        holder.product_id = (TextView) convertView.findViewById(R.id.hide_text);
        holder.item_name = (TextView) convertView.findViewById(R.id.text);
        holder.item_price = (TextView) convertView.findViewById(R.id.price);
        //holder.item_stock = (TextView)convertView.findViewById(R.id.stock);

        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    final HashMap<String, String> map = list.get(position);
    holder.product_id.setText(map.get(PRODUCT_ID));
    holder.item_name.setText(map.get(ITEM_NAME_COLUMN));
    holder.item_price.setText(map.get(ITEM_PRICE_COLUMN));
    holder.item_stock.setText(map.get(ITEM_AVALIABLE_QUANTITY));

    /*if(holder.item_stock.equals("0")){

        convertView.setBackgroundResource(R.drawable.heading);
    }*/

    return convertView;
}

}

4

3 に答える 3

2

独自のカスタマイズ レイアウトを持つカスタム アダプタにデータを送信できます。

Main.java

  ListAdapter  adapter = new ListAdapter(this, arrayList);//ListAdapter is custom Adapter  
hotelList.setAdapter(adapter);  // hotellist is instance of ListView

カスタム Adapter .java ファイルは次のとおりです。このクラスには、list_row という 1 つの個別のビューがあります。

public class LazyAdapterForReminder extends BaseAdapter {    
private Activity activity;   
private static LayoutInflater inflater=null;   

public LazyAdapterForReminder(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.list_row, null);
 TextView lv = (TextView)vi.findViewByID(R.id.blabla);    

   if(stock==o)
       lv.setBackgroundResource(R.color.red);
   else
       lv.setBackgroundResource(R.color.green);

    return vi;
}

}

于 2013-03-01T10:44:31.030 に答える
1

リストビューに設定するカスタムアダプタの作成に精通していることを願っています。在庫切れの商品の状態と商品名および日付を使用して、リストアイテムを管理します。CustomAdapter getViewメソッドでは、状態を確認してリストアイテムの色の背景を設定したり、対応する画像の描画可能ファイルを設定したりできます。例:

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


                               if(stock==0){
                                        convertView.setBackgroundColor(R.color.grey);
                                 }else{
                                        convertView.setBackgroundColor(R.color.red);
                                   }

                          return convertView;
                    }
于 2013-03-01T10:26:18.123 に答える
0

アダプタgetViewで背景を設定できます。コードは次のようになります。

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


        ViewHolder holder = null;

          if (convertView == null) {


            LayoutInflater vi = (LayoutInflater)  getContext().getSystemService (Context.LAYOUT_INFLATER_SERVICE);
            convertView = vi.inflate(R.layout.listsearchitem, null);
            }

  //.................

            // then you could set the backgorun for the out of stock products
            convertView.setBackgroundResource(resid)

            //.................
      }
于 2013-03-01T10:22:02.210 に答える