2012-01-19 4 views
1

テーブルレイアウトをリストビューに配置しようとしていますが、正しく表示されないスピナーが1つあります。私はそれが正常に動作するシンプルなテーブルレイアウトでこのコード は、いずれかが私に言うことができますをしようとした場合、私は間違ってリストビューでのTablelLayoutの奇妙な振る舞い

答えて

1

つもりどこBaseAdapter

@Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      final int pos = position; 
      final ViewHolder fHolder; 
      ViewHolder holder ; 
      View view = null; 

      if(convertView == null) { // InflateViewHelper class is returning 
            // object of View class In InflateViewHelper class 
            //i have written 
           //View v = inflater.inflate(R.layout.table_layout, null); 

       InflateViewHelper inflateView = new InflateViewHelper(inflater, aShoppingItem.get(position), mContext); 
       view = inflateView.createView(); 


       holder = new ViewHolder(); 
       holder.txtUnitPrice = (TextView) view.findViewById(R.id.txtUnitPrice); 
       holder.txtTotalPrice = (TextView) view.findViewById(R.id.txtTotalPrice); 
       holder.spinner = (Spinner) view.findViewById(R.id.spinner); 

       view.setTag(holder); 

      } 
      else { 

       view = convertView; 
       holder = (ViewHolder)convertView.getTag(); 

      } 
fHolder = holder; 
      holder.spinner.setOnItemSelectedListener(
        new OnItemSelectedListener() { 

         @Override 
         public void onItemSelected(AdapterView<?> parent, View view, int iposition, long id) 
         { 

          value = parent.getItemAtPosition(iposition).toString(); 

          if(pos<totalItems.size()) 
           totalItems.set(pos, value); 
          else 
           totalItems.add(pos,value); 



          int number = Integer.parseInt(value); 
          int unit = Integer.parseInt(fHolder.txtUnitPrice.getText().toString()); 
          String total = String.format("%d", unit*number); 
          fHolder.txtTotalPrice.setText(total); 
          String amnt = fHolder.txtTotalPrice.getText().toString(); 
          Log.v("AMOUNT", amnt); 

          if(pos< totalAmount.size()) 
           totalAmount.set(pos, amnt); 
          else 
           totalAmount.add(pos, amnt); 

         } 

         @Override 
         public void onNothingSelected(AdapterView<?> parent) { 
          totalItems.add(pos, value); 
          Log.v("[email protected]@@@", value);   
         } 

      }); 

      int number = Integer.parseInt(value); 
      int unit =   Integer.parseInt(holder.txtUnitPrice.getText().toString()); 
      String total = String.format("%d", unit*number); 
      holder.txtTotalPrice.setText(total); 

      return view; 
     } 

を拡張CustomAdapterのgetViewメソッド()メソッドでテーブルレイアウトを膨らまいます長い間、この問題の解決策が得られました。 この問題を乗り切るために、私は9パッチの画像を使用し、それをスピナーのバックグラウンドとして入れて、よりスリムなスピナーを得ました。私はこの答えをthis link

から得ました