Android 如何使用自定义适配器从ListView返回自定义对象
尤其是老程序员。我需要一些帮助,因为我正在一个商业应用程序中使用一个ListView和一个自定义适配器,该应用程序需要一个order菜单,在此菜单中需要一些Edit Text字段。 我正在寻找某种方法来返回一个自定义对象,其中包含用户在字段中放置的值,我尝试使用listView.getItemAtPosition(X),但这会返回一个对象类的通用对象,我不知道如何将此对象转换为我的自定义类。 上面是我的自定义适配器:Android 如何使用自定义适配器从ListView返回自定义对象,android,listview,Android,Listview,尤其是老程序员。我需要一些帮助,因为我正在一个商业应用程序中使用一个ListView和一个自定义适配器,该应用程序需要一个order菜单,在此菜单中需要一些Edit Text字段。 我正在寻找某种方法来返回一个自定义对象,其中包含用户在字段中放置的值,我尝试使用listView.getItemAtPosition(X),但这会返回一个对象类的通用对象,我不知道如何将此对象转换为我的自定义类。 上面是我的自定义适配器: package com.mobile.pedido.pedidomob
package com.mobile.pedido.pedidomobile.model.adapter;
import android.content.Context;
import android.graphics.Color;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.mobile.pedido.pedidomobile.*;
import com.mobile.pedido.pedidomobile.dao.local.ItemPedidoTempDAO;
import com.mobile.pedido.pedidomobile.model.ItemPedidoModelo;
import java.util.List;
/**
* Created by MATEUS on 11/02/2017.
*/
public class ProdutoListamgePrecoAdapter extends BaseAdapter {
private Context context;
private List<ItemPedidoModelo> lista;
int cod_pedido;
TextView tv_sequencia, tv_nome_item;
EditText et_quantidade, et_valor;
Button btn_excluir;
public ProdutoListamgePrecoAdapter(Context context, List<ItemPedidoModelo> lista, int cod_pedido) {
this.context = context;
this.lista = lista;
this.cod_pedido = cod_pedido;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ItemPedidoModelo itemPedidoModelo = lista.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.pedidoitempedido_itemprecoadapter, null);
tv_sequencia = (TextView) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_sequencia);
tv_nome_item = (TextView) layout.findViewById(R.id.pedidoitempedido_listagemadapter_nome);
et_quantidade = (EditText) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_quantidade);
et_valor = (EditText) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_preco);
btn_excluir = (Button) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_excluir);
tv_sequencia.setText(Integer.toString(itemPedidoModelo.getSequencia()));
tv_nome_item.setText(itemPedidoModelo.getNome_item());
et_quantidade.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
try {
lista.get(position).setQuantidade(et_quantidade.getText().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
});
et_valor.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
try {
lista.get(position).setPreco(s.toString());
Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
} catch (NumberFormatException e) {
Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
});
btn_excluir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (itemPedidoModelo.isAtivo()) {
ItemPedidoTempDAO iptdao = new ItemPedidoTempDAO();
iptdao.excluirItemPedidoTemp(context, cod_pedido, itemPedidoModelo.getSequencia());
btn_excluir.setText("EXCLUIDO");
btn_excluir.setEnabled(false);
btn_excluir.setTextColor(Color.RED);
tv_sequencia.setTextColor(Color.RED);
tv_nome_item.setTextColor(Color.RED);
et_quantidade.setEnabled(false);
et_valor.setEnabled(false);
itemPedidoModelo.setAtivo(false);
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
return layout;
}
}
我使用以下代码访问listView的子级:
View listItem = listView.getChildAt(0);
TextView sequencia = (TextView) listItem.findViewById(R.id.pedidoitempedido_listagemadapter_nome);
我使用了listview的方法“getChildAt”,之后,我使用了findViewById和TextView,我需要获取文本值我的介绍应该是“大家好,尤其是老程序员。”:/
View listItem = listView.getChildAt(0);
TextView sequencia = (TextView) listItem.findViewById(R.id.pedidoitempedido_listagemadapter_nome);