2017-10-08 115 views
-1

我有一个对象的项目列表。我使用for循环创建了按照列表大小的动态按钮。如何切换数据点击按钮?

我正在显示一些数据时,它的第一个项目的循环。现在/我想在点击按钮时切换数据。

按钮将具有该项目的编号,如果列表中有三个项目,则三个按钮在那里命名为一,二,三。

所以如果我先点击第一项我要显示第一项的数据,如果第二项点击第二项的数据。

我试图做到这一点,但我无法得到结果。

@Override 
public void doPostExecute(List<Payment> list1) 
{ 

    list.addAll(list1); 

    for(final Payment payment : list) { 

     i++; 

     Button myButton = new Button(getActivity()); 

     LinearLayoutCompat.LayoutParams lp = new LinearLayoutCompat.LayoutParams(60,30); 
     linear_buttons.addView(myButton, lp); 

     myButton.setText(String.valueOf(i)); 
     myButton.setBackgroundResource(R.drawable.edit_button); 

     myButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if (payment.getPaidAmount() != null && !payment.getPaidAmount().equals("null")) 
        txt_paid.setText("$" + payment.getPaidAmount()); 

       if (payment.getProductStatus() != null && !payment.getProductStatus().equals("null")) { 
        if (payment.getProductStatus().equals("1")) { 
         txt_status.setText(getString(R.string.paid)); 
         button_complain.setVisibility(View.VISIBLE); 
         button_more.setVisibility(View.GONE); 

        } else if (payment.getProductStatus().equals("0")) { 
         txt_status.setText(getString(R.string.unPaid)); 
         button_complain.setVisibility(View.GONE); 
         button_more.setVisibility(View.GONE); 
        } else if (payment.getProductStatus().equals("5")) { 
         txt_status.setText(getString(R.string.processing)); 
         button_complain.setVisibility(View.VISIBLE); 
         button_more.setVisibility(View.GONE); 
        } else if (payment.getProductStatus().equals("6")) { 
         button_complain.setVisibility(View.GONE); 
         button_more.setVisibility(View.VISIBLE); 
         txt_status.setText(getString(R.string.releasedStatus)); 
        } else if (payment.getProductStatus().equals("8")) { 
         txt_status.setText(getString(R.string.disputeStatus)); 
         button_complain.setVisibility(View.GONE); 
         button_more.setVisibility(View.VISIBLE); 
        } else if (payment.getProductStatus().equals("9")) { 
         txt_status.setText(getString(R.string.disputeResolvedStatus)); 
         button_complain.setVisibility(View.GONE); 
         button_more.setVisibility(View.VISIBLE); 
        } else if (payment.getProductStatus().equals("2")) { 
         txt_status.setText(getString(R.string.completedStatus)); 
         button_complain.setVisibility(View.GONE); 
         button_more.setVisibility(View.VISIBLE); 
        } 

        if (payment.getTpAmount() != null && !payment.getTpAmount().equals("null")) { 

         String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getTpAmount())); 
         txt_tp_amount.setText("$" + amount); 
        } 

        if (payment.getCommission() != null && !payment.getCommission().equals("null")) { 

         String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getCommission())); 
         txt_comission.setText("$" + amount); 
        } 

        if (payment.getTax() != null && !payment.getTax().equals("null")) { 

         String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getTax())); 
         txt_tax.setText("$" + amount); 
        } 

        if (payment.getPayeEmail() != null && !payment.getPayeEmail().equals("null")) { 

         txt_payee_email.setText(payment.getPayeEmail()); 
        } 
        if (payment.getPayerEmail() != null && !payment.getPayerEmail().equals("null")) { 

         txt_payer_email.setText(payment.getPayerEmail()); 
        } 

        if (payment.getPayerName() != null && !payment.getPayerName().equals("null")) { 

         txt_payer_name.setText(payment.getPayerName()); 
        } 

        if (payment.getVendorId() != null && !payment.getVendorId().equals("null")) { 

         txt_vendor_id.setText(payment.getVendorId()); 
        } 
       } 
      } 
     }); 

     if(i==1) { 

      if (payment.getPaidAmount() != null && !payment.getPaidAmount().equals("null")) 
       txt_paid.setText("$" + payment.getPaidAmount()); 

      if (payment.getProductStatus() != null && !payment.getProductStatus().equals("null")) { 
       if (payment.getProductStatus().equals("1")) { 
        txt_status.setText(getString(R.string.paid)); 
        button_complain.setVisibility(View.VISIBLE); 
        button_more.setVisibility(View.GONE); 

       } else if (payment.getProductStatus().equals("0")) { 
        txt_status.setText(getString(R.string.unPaid)); 
        button_complain.setVisibility(View.GONE); 
        button_more.setVisibility(View.GONE); 
       } else if (payment.getProductStatus().equals("5")) { 
        txt_status.setText(getString(R.string.processing)); 
        button_complain.setVisibility(View.VISIBLE); 
        button_more.setVisibility(View.GONE); 
       } else if (payment.getProductStatus().equals("6")) { 
        button_complain.setVisibility(View.GONE); 
        button_more.setVisibility(View.VISIBLE); 
        txt_status.setText(getString(R.string.releasedStatus)); 
       } else if (payment.getProductStatus().equals("8")) { 
        txt_status.setText(getString(R.string.disputeStatus)); 
        button_complain.setVisibility(View.GONE); 
        button_more.setVisibility(View.VISIBLE); 
       } else if (payment.getProductStatus().equals("9")) { 
        txt_status.setText(getString(R.string.disputeResolvedStatus)); 
        button_complain.setVisibility(View.GONE); 
        button_more.setVisibility(View.VISIBLE); 
       } else if (payment.getProductStatus().equals("2")) { 
        txt_status.setText(getString(R.string.completedStatus)); 
        button_complain.setVisibility(View.GONE); 
        button_more.setVisibility(View.VISIBLE); 
       } 

       if (payment.getTpAmount() != null && !payment.getTpAmount().equals("null")) { 

        String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getTpAmount())); 
        txt_tp_amount.setText("$" + amount); 
       } 

       if (payment.getCommission() != null && !payment.getCommission().equals("null")) { 

        String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getCommission())); 
        txt_comission.setText("$" + amount); 
       } 

       if (payment.getTax() != null && !payment.getTax().equals("null")) { 

        String amount = String.format(Locale.US, "%.2f", Double.parseDouble(payment.getTax())); 
        txt_tax.setText("$" + amount); 
       } 

       if (payment.getPayeEmail() != null && !payment.getPayeEmail().equals("null")) { 

        txt_payee_email.setText(payment.getPayeEmail()); 
       } 
       if (payment.getPayerEmail() != null && !payment.getPayerEmail().equals("null")) { 

        txt_payer_email.setText(payment.getPayerEmail()); 
       } 

       if (payment.getPayerName() != null && !payment.getPayerName().equals("null")) { 

        txt_payer_name.setText(payment.getPayerName()); 
       } 

       if (payment.getVendorId() != null && !payment.getVendorId().equals("null")) { 

        txt_vendor_id.setText(payment.getVendorId()); 
       } 
      } 
     } 

    } 

} 

我该如何做到这一点?请帮忙..谢谢。

回答

0

您正在使用变量i作为全局变量并在循环内使用i++。因此在onClick方法中,if(i == 1)要么始终为假,要么始终为真。

在您创建按钮的for循环中创建变量local并使用myButton.setId(i);

现在里面OnClickListener可以使用int id = v.getId();,并使用if(id == 1)

+0

获取数据如何将此开关是否行得通呢?我不知道数组的大小和将创建多少个按钮将基于数据,所以如何检查交换机中的正确对象? – Sid

+0

如何在开关的情况下? – Sid

+0

@Sid你的代码在问题中发生了什么,以及你想要做什么? –

0

您可以设置一个onClickLister到该行的按钮,这将有该行的数据参考。使用意图来启动详细的活动,并将点击的项目的数据作为额外添加。

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

//Inflate your row 

button.setOnClickListener(new OnClickListener(){ 
    @Override 
    //On click function 
    public void onClick(View view) { 
     HashMap<String, String> item = contactsList.get(position); 
     //Create the intent to start another activity 
     Intent intent = new Intent(view.getContext(), DetailActivity.class); 
     intent.putExtra("data", item); 
     view.getContext().startActivity(intent); 
    } 
}); 
}); 
在接收活动

,您可以从意向

HashMap<String, String> data = getIntent().getExtras().getParcelableExtra("data"); 
+0

我没有任何意图,我在相同的片段本身显示数据 – Sid