2013-05-27 37 views
1

這是我的json variabel ijiInvest,persenHmint1, inuNilai, selisih,persen_hke1, tanggal,ijiId我想獲得值Result=inuNilai(i)-inuNilai(0)並將此值發送到我的適配器,但我不知道發送它的方式,因爲詳細信息這是如何我宣佈我的variabel:如何計算索引json的值android

public class NabDetail { 
    public static final char[] Perubahan1 = null; 
    String ijiInvest, ijiId; 
    String tanggal; 
    double persenHmint1, inuNilai, selisih,persen_hke1; 

    public NabDetail(String ijiInvest, double persenHmint1, double inuNilai, 
      double selisih,double persen_hke1, String tanggal,String ijiId) { 
     // TODO Auto-generated constructor stub 
     this.ijiInvest = ijiInvest; 
     this.persenHmint1 = persenHmint1; 
     this.inuNilai = inuNilai; 
     this.selisih = selisih; 
     this.ijiId = ijiId; 
     this.tanggal = tanggal; 
     this.persen_hke1=persen_hke1; 
    } 

    public String getIjiInvest() { 
     return ijiInvest; 
    } 

    public String getIjiId() { 
     return ijiId; 
    } 

    public String getTanggal() { 

     return tanggal; 
    } 

    public double getPersenHmint1() { 
     return persenHmint1; 
    } 

    public double getInuNilai() { 
     return inuNilai; 
    } 

    public double getSelisih() { 
     return selisih; 
    } 

    public double getpersen_hke1(){ 
     return persen_hke1; 
    } 
} 

這是我分析我的JSON:

try { 
      JSONArray jsonArray = new JSONArray(result); 
      NabDetail item = null; 

      for (int i = 0; i < jsonArray.length(); i++) { 

       JSONObject jsonObject = jsonArray.getJSONObject(i); 

     item = new NabDetail(jsonObject.optString("lji_invest"), 
         jsonObject.optDouble("persen_hmin1"), 
         jsonObject.optDouble("lnu_nilai"), 
         jsonObject.optDouble("selisih"), 
         jsonObject.optDouble("persen_hke1"), 
         jsonObject.optString("tanggal"), 
         jsonObject.optString("lji_id") 
         ); 


       listData.add(item); 
      } 

      TabelNABDetail adapter = new TabelNABDetail(NABActivityDetail.this, 
        listData); 
      listviewtabel.setAdapter(adapter); 

這就是我吹在我的適配器:

if(view==null){ 
      LayoutInflater inflater=(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
      view= inflater.inflate(R.layout.layout_tabel_detailnab, null); 
      holder=new ViewHolder(); 
      holder.tanggal=(TextView)view.findViewById(R.id.vartanggal); 
      holder.lnunilai=(TextView)view.findViewById(R.id.varlnunilai); 
      holder.selisih=(TextView)view.findViewById(R.id.varSelisih); 
      holder.persenHmint1=(TextView)view.findViewById(R.id.varpersen); 
      holder.persen_hke1=(TextView)view.findViewById(R.id.varlpersenke1); 
      holder.perubahan=(TextView)view.findViewById(R.id.varperubahan); 
      view.setTag(holder); 
     } 
     else{ 
      holder=(ViewHolder)view.getTag(); 

     } 
     holder.tanggal.setText(listData.get(position).getTanggal()); 
     //convert double ke string 
     holder.lnunilai.setText(String.valueOf(listData.get(position).getInuNilai())); 
     holder.selisih.setText(String.valueOf(listData.get(position).getSelisih())); 
     holder.persenHmint1.setText(String.format("%.5f",listData.get(position).getPersenHmint1())+"%"); 
     holder.persen_hke1.setText(String.format("%.5f",listData.get(position).getpersen_hke1())+"%"); 
//  holder.perubahan.setText(String.valueOf(listData.get(position).Perubahan1)); 
     return view; 
    } 

    static class ViewHolder{ 
     TextView tanggal, lnunilai,selisih,persenHmint1,persen_hke1,perubahan; 
    } 

我評論的行// holder.perubahan.setText(String.valueOf(listData.get(position).Perubahan1)); return view;是我放置結果值的地方。但我不知道計算方法並將其發送到我的適配器,我希望有人明白我的意思和出租車幫助解決我的問題,非常感謝。

+0

什麼是'listData'? 不'holder.perubahan.setText(String.valueOf(listData.get(position).Perubahan1-listData.get(0).Perubahan1));'按預期工作? – Nezam

回答

1

這裏是我對你的問題的解釋,你有JSON數據的數組,要計算在指數inuNilai的值之間的差異(selisih)0inuNilai對指數1,和將它插入到textView中,這是正確的嗎?

如果這是你想做的事,那麼你需要做的是:

holder.perubahan.setText(String.valueOf(listData.get(position).getInuNilai()-listData.get(position-1).getInuNilai()); 

更清晰的代碼:

double inuNilai0 = listData.get(position-1).getInuNilai(); 
double inuNilai1 = listData.get(position).getInuNilai(); 
double result = inuNilai1-inuNilai0; 
holder.perubahan.setText(String.valueOf(result); 

但要記住,做檢查,如果位置索引= 0 ,代碼可能會導致NullPointerException。你必須檢查,如果該指數爲0,則結果爲0

也許是這樣的:

if (position==0) { 
     holder.perubahan.setText("0"); 
} else { 
     double inuNilai0 = listData.get(position-1).getInuNilai(); 
     double inuNilai1 = listData.get(position).getInuNilai(); 
     double result = inuNilai1-inuNilai0; 
     holder.perubahan.setText(String.valueOf(result); 
} 

我希望這是有幫助的,祝你好運^^

+0

謝謝你的回答....這是如此接近我需要的,這只是改變listData.get(位置1)到listData.get(0)如果我想從第一個索引... ... GBU ^^ –