1

baseadapter を使用してカスタム リストビューを作成しています。私のリストビューには、テキストビュー、2 つのボタン、および編集テキストが含まれています。2 つのボタンは足し算と引き算です。プラスボタンをクリックすると、edittext の値を 1 増やしたいので、edittext のデフォルト値を 1 のままにしています。

これは、listview の mycustombaseadapter の getView メソッドです。

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
        final ViewHolder holder;
        int i=1;
        if (convertView == null) {


       convertView = mInflater.inflate(R.layout.each_menu, null);
       holder = new ViewHolder();


      holder.txtoutletname = (TextView) convertView.findViewById(R.id.menuname);
      holder.price = (TextView) convertView.findViewById(R.id.cost);
      holder.plus = (Button) convertView.findViewById(R.id.plusbut);
      holder.minus = (Button) convertView.findViewById(R.id.minusbut);
      holder.qua = (EditText) convertView.findViewById(R.id.quanedit);
      holder.plus.setId(i);

      holder.minus.setId(i); 
      i++;
       convertView.setTag(holder);
      } else {
       holder = (ViewHolder) convertView.getTag();
      }

      holder.txtoutletname.setText(searchArrayList.get(position).getmenuname());
      holder.price.setText(searchArrayList.get(position).getcost());




      holder.plus.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // TODO Auto-generated method stub
                 String vall=holder.qua.getText().toString();
                 int num=Integer.parseInt(vall);
                 num=num+1;
                 holder.qua.setText(num);
                 Log.d("plus",vall);

            }
        });





      return convertView;

}

これはViewHolderクラスです

static class ViewHolder {
    TextView txtoutletname; 
    TextView price;
    NumberPicker np;
    Button plus;
    Button minus;
    EditText qua;

    }

+ ボタンをクリックすると、アクティビティが強制的に閉じられます。これを手に入れるのを手伝ってください。

String.valueOf() は私にとってはうまくいきました。ありがとう

しかし、今ではボタンがクリック可能であるため、リストビューはクリック可能ではありません..ボタンとリストビューの両方をクリック可能にする必要があります。これらのボタンなしで機能するitemclicklistenerを追加しました..

4

1 に答える 1

3

これを交換

holder.qua.setText(num);

holder.qua.setText(String.valueOf(num));

あなたはこれを持っているから

int num=Integer.parseInt(vall); // num is an int value
num=num+1;

public final void setText (int resid)

あなたの場合、IDを持つリソースを探します。見つからない場合は、ResourceNotFoundException が発生します。

何が必要

public final void setText (CharSequence text)これはCharSequenceparamとして受け取ります。

だから使うString.valueOf(num)

于 2013-11-08T18:47:49.480 に答える