当它在自定义适配器内并且项目选择处于活动状态时,如何在微调器中获取所选项目

时间:2014-08-30 02:45:24

标签: android android-spinner

我有一个客户适配器,我的布局,如按钮edittext,textview,spinner都在那里。我得到了我的Activity项目的所有价值,其中有一个保存按钮的动作。现在我有问题如何在我的微调器内获取值,因为它得到一个空值。这是我的代码

MyAdapter.java

package com.functions;

import java.util.ArrayList;
import java.util.List;

import com.example.senditem.R;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MyAdapter extends ArrayAdapter<Model>  {

 private final List<Model> list;


 String adapter;
    private final Activity context;
    private final int id;
    int listPosition;
    public MyAdapter(Activity context, List<Model> list, int id){
        super(context, R.layout.userproduct, list);
        this.context = context;
        this.list = list;
        this.id = id;
    }


    class ViewHolder{
        protected TextView text;
        EditText quantity;
        protected TextView amount;
        TextView ext;
        Spinner uom;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        listPosition = position;
        ViewHolder viewHolder = null;
        if(convertView == null){
            LayoutInflater inflator = context.getLayoutInflater();
            convertView = inflator.inflate(R.layout.userproduct, null);
            viewHolder = new ViewHolder(); 
            viewHolder.text = (TextView) convertView.findViewById(R.id.label);
            viewHolder.text.setFocusable(true);
            viewHolder.quantity = (EditText) convertView.findViewById(R.id.inputQty);
            viewHolder.amount = (TextView) convertView.findViewById(R.id.inputAmt);
            viewHolder.uom = (Spinner) convertView.findViewById(R.id.inputUom);
            viewHolder.ext = (TextView) convertView.findViewById(R.id.inputTamt);
            convertView.setTag(viewHolder);
            convertView.setTag(R.id.label, viewHolder.text);
            convertView.setTag(R.id.inputQty, viewHolder.quantity);
            convertView.setTag(R.id.inputAmt, viewHolder.amount);
            convertView.setTag(R.id.inputTamt, viewHolder.ext);
            convertView.setTag(R.id.inputUom, viewHolder.uom);
        }
        else{
            viewHolder = (ViewHolder) convertView.getTag();
        }
        SqliteHelper db = new SqliteHelper(context);
        viewHolder.text.setText(list.get(position).getName());
        viewHolder.quantity.setId(position);
        viewHolder.amount.setText(String.valueOf(list.get(position).getAmt()));
        viewHolder.amount.setId(position);
        viewHolder.ext.setId(position);    
        viewHolder.uom.setId(position);
        viewHolder.text.setId(position);
        String data = db.getAllDetails(id, list.get(position).getitemId());
        String data2 = db.getExt(id,list.get(position).getitemId());
        if(data==null)
        {
            viewHolder.quantity.setText(list.get(position).quantity);       
        }
        else{
            viewHolder.quantity.setText(data);
        }
        if(data2==null)
        {
            viewHolder.ext.setText(String.valueOf(list.get(position).ext));
        }
        else{
            viewHolder.ext.setText(data2);
        }
        viewHolder.quantity.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                public void onFocusChange(View v, boolean hasFocus) {
                    if (!hasFocus){
                        final int position = v.getId();
                        final EditText Caption = (EditText) v;

                        list.get(position).quantity = Caption.getText().toString();              

                    }
                }
            });

        viewHolder.ext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus){
                        final int position = v.getId();
                        final TextView Caption = (TextView) v;    
                    list.get(position).ext = (float) Integer.parseInt((Caption.getText().toString()));

                }
            }
        });

        List<Model> uomlist = (List<Model>) db.selectUom(list.get(position).getitemId());
        List<String> myuom = new ArrayList<String>();
        for(int j=0;j<uomlist.size();j++){
            myuom.add(uomlist.get(j).getUom());
        }


        ArrayAdapter<String> uomadapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,myuom);
        uomadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        viewHolder.uom.setAdapter(uomadapter);

        return convertView;

    }





}

UserItemDetailActivity

package com.example.senditem;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.example.senditem.UserMainActivity.ViewHolder;
import com.functions.Model;
import com.functions.MyAdapter;
import com.functions.SqliteHelper;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class UserItemDetailActivity extends Activity {


ArrayAdapter<Model> adapter;
List<Model> list = new ArrayList<Model>();
ListView listView;

Button btnSave;
TextView textname;
EditText textqty;
TextView textamt;
Spinner uom;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.useritemdetail);


    Intent i=getIntent();
    final Bundle b = i.getExtras();
    final SqliteHelper db = new SqliteHelper(this);
    listView = (ListView) findViewById(R.id.detail_list);
    btnSave = (Button) findViewById(R.id.btnSave);

    adapter = new MyAdapter(this, getModel(), Integer.parseInt(b.get("id").toString()) 

);
    listView.setAdapter(adapter);

    uom = (Spinner) findViewById(R.id.inputUom);


Toast.makeText(getBaseContext(), b.get("itemname").toString(),Toast.LENGTH_SHORT).show();



    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    final String currentDateandTime = sdf.format(new Date());

    btnSave.setOnClickListener(new View.OnClickListener() {
                public void onClick(final View v) {
                listView.clearFocus();
                AlertDialog.Builder alert = new AlertDialog.Builder(v.getContext());
                alert.setTitle("Save Details?");
                alert.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
                @Override
                public void onClick(DialogInterface dialog, int which){
                    for (int i = 0; i < list.size(); i++) {
                        if(list.get(i).getQuantity()!=null)
                        {
                            float amt = list.get(i).getAmt();
                            int iqty = Integer.parseInt(list.get(i).getQuantity());
                            float tamt = amt * iqty;
                            list.get(i).setTamount(tamt);
                            list.get(i).setUom(String.valueOf(uom.getSelectedItem()));
                            db.addItem(new 

Model(Integer.parseInt(b.get("id").toString()), list.get(i).getitemId(), list.get(i).getQuantity(),list.get(i).getUom(),list.get(i).getAmt(),list.get(i).getTamount(),currentDateandTime));


                        }
                    }
                }
                });
                alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
                         dialog.cancel(); 
                     }
                 });
                alert.show();
        }
     });

} 




private List<Model> getModel() {
    Intent i=getIntent();
    final Bundle b = i.getExtras();
    SqliteHelper db = new SqliteHelper(this);
    list = db.getProduct(b.get("itemname").toString());
    return list;
}



}

1 个答案:

答案 0 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

public class MyAdapter extends ArrayAdapter<Model>  {

    private final List<Model> list;


    String adapter;
    private final Activity context;
    private final int id;
    int listPosition;
    public MyAdapter(Activity context, List<Model> list, int id){
        super(context, R.layout.userproduct, list);
        this.context = context;
        this.list = list;
        this.id = id;
    }


    class ViewHolder{
        protected TextView text;
        EditText quantity;
        protected TextView amount;
        TextView ext;
        Spinner uom;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent){
        listPosition = position;
        ViewHolder viewHolder = null;
        if(convertView == null){
            LayoutInflater inflator = context.getLayoutInflater();
            convertView = inflator.inflate(R.layout.userproduct, null);
            viewHolder = new ViewHolder();
            viewHolder.text = (TextView) convertView.findViewById(R.id.label);
            viewHolder.text.setFocusable(true);
            viewHolder.quantity = (EditText) convertView.findViewById(R.id.inputQty);
            viewHolder.amount = (TextView) convertView.findViewById(R.id.inputAmt);
            viewHolder.uom = (Spinner) convertView.findViewById(R.id.inputUom);
            viewHolder.ext = (TextView) convertView.findViewById(R.id.inputTamt);
            convertView.setTag(viewHolder);
        }
        else{
            viewHolder = (ViewHolder) convertView.getTag();
        }
        SqliteHelper db = new SqliteHelper(context);
        viewHolder.text.setText(list.get(position).getName());
        viewHolder.quantity.setId(position);
        viewHolder.amount.setText(String.valueOf(list.get(position).getAmt()));
        viewHolder.amount.setId(position);
        viewHolder.ext.setId(position);
        viewHolder.uom.setId(position);
        viewHolder.text.setId(position);
        String data = db.getAllDetails(id, list.get(position).getitemId());
        String data2 = db.getExt(id,list.get(position).getitemId());

        if(data==null)
        {
            viewHolder.quantity.setText(list.get(position).quantity);
        }
        else{
            viewHolder.quantity.setText(data);
        }
        if(data2==null)
        {
            viewHolder.ext.setText(String.valueOf(list.get(position).ext));
        }
        else{
            viewHolder.ext.setText(data2);
        }
        viewHolder.quantity.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus){
                    list.get(position).quantity = ((EditText) v).getText().toString();

                }
            }
        });

        viewHolder.ext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus){
                    list.get(position).ext = (float) Integer.parseInt((((TextView) v).getText().toString()));

                }
            }
        });

        List<Model> uomlist = (List<Model>) db.selectUom(list.get(position).getitemId());
        List<String> myuom = new ArrayList<String>();
        for(int j=0;j<uomlist.size();j++){
            myuom.add(uomlist.get(j).getUom());
        }


        ArrayAdapter<String> uomadapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,myuom);
        uomadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        viewHolder.uom.setAdapter(uomadapter);

        return convertView;

    }
}