2016-07-18 15 views
0

Listviewをクリックした後に間違った値が表示されます。Listviewに正しい値が与えられていません

フロー:スピナーはリストビューの値を選択したら、

a)は、私がスピナーを持っているがAsynctaskの助けを使用して変更されます。リストビューでマイアダプタMicListAdapterで

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(); 
      } 
     } 

を項目をロードする

AsynctaskのOnPostMethod方法は、直接呼び出しが私のために

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

B)が動作していないので、私はのaddAll()メソッドを作成しましたListviewをクリックすると、値がカスタムダイアログボックスに表示されません。つまり、

私のスピナーに2つの値(1 & 2)。初めてSpinnerに2を設定したときにSpinnerに1が表示され、2に変更されたListViewの値が「2」になりますが、Listviewをクリックすると「1 "ここで

は、リストビューのためのコードスニペットは、これは私のフルアダプタクラスです

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); 
..... 
}); 

をonclickのです。

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; */ 

    } 

このシナリオでは、私のために発生し、なぜ誰もが...代わりに、クリックした項目の値を取得するためのonItemClickメソッドの最初のパラメータであるlstView使用arg0使用しての事前

答えて

1

に感謝を教えてくださいすることができ:

lst Listオブジェクトを使用して
list_obj = (MIC_OrderDetails)arg0.getAdapter().getItem(position); 

OR

list_obj = lst.get(position); 

しかし、私は同じ試みた

+0

Asynctaskを延長している外部のクラスにアクセスするためのグローバル変数としてlstを宣言する必要があるが、それは変更さbefore.nothingと同じ持続します。 –

+0

@PraneshSahu:[OK]をクリックしてアダプターのコードが –

+0

示して私の更新MicListAdapterフルアダプタクラスの@ρяσѕρєяを確認してくださいK –

関連する問題