Listview没有给出正确的值

时间:2016-07-18 15:35:40

标签: android listview android-asynctask

点击后,我从Listview获得了错误的值。

流量:

a)一旦Spinner选择使用Asynctask帮助改变Listview值,我就有了一个Spinner。

OnPostMethod Asynctask方法,用于在Listview中加载项目

protected void onPostExecute(List<MIC_OrderDetails> lst) {
            dialog.setMessage("Inflating Data...");

            if (lst.get(lst.size() - 1).getResult().contains(("success"))) {

                ordList.addAll(lst);
                ordList.notifyDataSetChanged();
                dialog.dismiss();

                /*
                 * ordList = new MicListAdapter(InventoryCount.this, lst);
                 * lstView.setAdapter(ordList);
                 * 
                 * dialog.dismiss();
                 */

            } else {
                dialog.dismiss();
                toastText.setText("Problem in loading Items");
                Toast toast = new Toast(getApplicationContext());
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 410);
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setView(toastLayout);
                toast.show();
            }
        }

在我的适配器MicListAdapter中我创建了addAll()方法,因为直接调用对我不起作用

public void addAll(List<MIC_OrderDetails> lst) {
        this.alllst.clear();
        this.alllst.addAll(lst);
        this.notifyDataSetChanged();
    }

b)单击Listview,值对应于我的自定义对话框中没有的值,即

假设我的微调器包含两个值(1&amp; 2)。默认情况下,第一次1将在Spinner中显示,当我将其更改为2时,Listview值会受到影响,对应于“2”,但是当我点击时在Listview上我得到的值属于“1”。

以下是Listview onclick

的代码段
    lstView.setOnItemClickListener(new OnItemClickListener() {
    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int position, long arg3) {

MIC_OrderDetails list_obj = new MIC_OrderDetails();
                    list_obj = (MIC_OrderDetails) lstView
                            .getItemAtPosition(position);

                    ItemNo = list_obj.getItemNumber();
                    Desc = list_obj.getItemDescription();
                    PickSeq = list_obj.getPickSeq();
                    StockUnit = list_obj.getUnit();
                    qtyonHand = list_obj.getQtyonHand();// This value gives
                                                        // QOHand
                    qtyCount = list_obj.getQtyCount();
                    loc = mspinner.getItemAtPosition(
                            mspinner.getSelectedItemPosition()).toString();

                    medtItem.setText(ItemNo);
                    medtdesc.setText(Desc);

                    qtyCount = supporter.getCurrencyFormat(Double
                            .parseDouble(qtyCount));

                    medtQtyCount.setText(qtyCount);
                    medtuom.setText(StockUnit);
                    medtQtyCountTotal.setText(qtyCount);
.....
});

这是我的完整适配器类。

public class MicListAdapter extends ArrayAdapter<MIC_OrderDetails> implements
    Filterable {

List<MIC_OrderDetails> alllst;
List<MIC_OrderDetails> list;

List<MIC_OrderDetails> filterlst;
// = new ArrayList<MIC_OrderDetails>();
Context context;

TextView txtitem;
TextView txtdesc;
TextView txtpick;
TextView txtQtyonHand;
TextView txtQtyCounted;
TextView txtuom;
/* TextView txtstatus; */

private ModelFilter filter;

@Override
public Filter getFilter() {
    if (filter == null) {
        filter = new ModelFilter();
    }
    return filter;
}

public MicListAdapter(Context context, List<MIC_OrderDetails> value) {
    // TODO Auto-generated constructor stub
    super(context, R.layout.six_textview, value);
    this.context = context;
    this.list = value;
    this.alllst = new ArrayList<MIC_OrderDetails>(list);
    this.filterlst = new ArrayList<MIC_OrderDetails>(alllst);
    getFilter();
}

public void addAll(List<MIC_OrderDetails> lst) {
    this.alllst.clear();
    this.alllst.addAll(lst);
    this.notifyDataSetChanged();
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return alllst.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    final int pos = position;

    View view = null;
    if (convertView == null) {

        convertView = LayoutInflater.from(getContext()).inflate(
                R.layout.six_textview, parent, false);

        txtitem = (TextView) convertView.findViewById(R.id.txt_fullItemNo);
        txtdesc = (TextView) convertView.findViewById(R.id.txt_fullDesc);
        txtpick = (TextView) convertView.findViewById(R.id.txt_fullLoc);
        txtQtyonHand = (TextView) convertView
                .findViewById(R.id.txt_fullord);
        txtQtyCounted = (TextView) convertView
                .findViewById(R.id.txt_fullrecqty);
        txtuom = (TextView) convertView.findViewById(R.id.txt_fullUom);
        convertView.setTag(new OrdersViewHolder(txtitem, txtdesc, txtpick,
                txtQtyonHand, txtQtyCounted, txtuom));

    } else {
        OrdersViewHolder viewHolder = (OrdersViewHolder) convertView
                .getTag();
    }

    OrdersViewHolder holder = (OrdersViewHolder) convertView.getTag();

    holder.txtitem.setText(alllst.get(position).getItemNumber());
    holder.txtdesc.setText(alllst.get(position).getItemDescription());
    holder.txtpick.setText(alllst.get(position).getPickSeq());
    holder.txtQtyonHand.setText((alllst.get(position).getQtyonHand()));
    /*
     * String o=(lst.get(position).getQtyShiped()).toString(); String
     * u=lst.get(position).getUom();
     */
    holder.txtQtyCounted.setText((alllst.get(position).getQtyCount()));
    holder.txtuom.setText(alllst.get(position).getUnit());
    /* holder.txtstatus.setText(alllst.get(position).getStatus()); */

    return convertView;

}

/** Holds child views for one row. */
static class OrdersViewHolder {

    TextView txtitem;
    TextView txtdesc;
    TextView txtpick;
    TextView txtQtyonHand;
    TextView txtQtyCounted;
    TextView txtuom;

    /* TextView txtstatus; */

    public OrdersViewHolder(TextView txtitem, TextView txtdesc,
            TextView txtpick, TextView txtQtyonHand,
            TextView txtQtyCounted, TextView txtuom) {
        // TODO Auto-generated constructor stub
        this.txtitem = txtitem;
        this.txtdesc = txtdesc;
        this.txtpick = txtpick;
        this.txtQtyonHand = txtQtyonHand;
        this.txtQtyCounted = txtQtyCounted;
        this.txtuom = txtuom;
        /* this.txtstatus=txtstatus; */

    }

任何人都可以告诉我为什么会出现这种情况......提前致谢

1 个答案:

答案 0 :(得分:1)

而不是使用lstView使用arg0这是onItemClick方法的第一个参数来获取点击的项目值:

list_obj = (MIC_OrderDetails)arg0.getAdapter().getItem(position);

OR

使用lst列表对象:

list_obj = lst.get(position);

但需要将lst声明为全局变量,以便在扩展Asynctask

的类之外访问它
相关问题