1

这是我的 json 变量ijiInvest,persenHmint1, inuNilai, selisih,persen_hke1, tanggal,ijiId,我想获取值Result=inuNilai(i)-inuNilai(0)并将这个值发送到我的适配器,但我不知道发送它的方式,详细说明这是我声明变量的方式:

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;我放置 Result 值的地方。但我不知道如何计算并将其发送到我的适配器中,我希望有人能理解我的意思,并且 cab 可以帮助解决我的问题,非常感谢。

4

1 回答 1

1

这是我对您的问题的解释,您有一个 JSON 数据数组,并且您想计算索引 0 上 inuNilai的值和索引 1 上inuNilai 的值之间的差异(selisih),并将其插入到 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);
}

希望对你有帮助,祝你好运^^

于 2013-05-27T06:06:10.100 回答