我有一个客户适配器,我的布局,如按钮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;
}
}
答案 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;
}
}