根据ArrayList

时间:2017-09-20 09:51:44

标签: android arraylist

这让我有点生气,因为我知道这应该很简单,但我没有得到理想的效果。

我有以下arraylist

private List<String> tagStringArray = new ArrayList<>();

然后我有一个方法可以根据从我的Retrofit实例中提取的ID值创建动态按钮。

在我的方法中,我有一个计数来帮助我设置按钮的标题,但我还将count的值添加到ArrayList以用于另一种方法。

我从上述方法中获取了相关信息。

count = 1;


    if (!questionNumber.equals("") && !questionNumber.equals(null)) {

        for (final Object value : list) {

            try {

        /*Dynamically create new Button which includes the question number
          */
                final AppCompatButton btn_question = new AppCompatButton(getActivity());



        /*LayoutParams (int width, int height,float weight)
        As LayoutParams is defaulted in px, I have called a method called dpToPX to make sure
        the dynamically added EditText is the same size on all devices.
         */
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dpToPx(280), dpToPx(45), 1);
                btn_question.setBackgroundColor(Color.parseColor("#3B5998"));
                btn_question.setTextColor(Color.WHITE);
                btn_question.setText("Question "+count);
                //set the Tag based on its position in the XML
                tagStringArray.add(String.valueOf((count)));
                count++;

如果用户点击说问题1按钮,我希望我的片段说问题1,所以为了尝试实现这一点,我尝试了以下操作:

String tags = String.valueOf(tagStringArray);
     tags = tags.substring(1, tags.length() -1);
     String[] currentTag = tags.split(",");

 if (currentTag[0].contains("1")) {
        tv_setQuestions_edit.setText("Question 1");
    }else if(currentTag[1].contains("2")) {
        tv_setQuestions_edit.setText("Question 2");
    }

但是这总是将标题设置为问题1,我不确定出了什么问题.......

如果我使用以下干杯Toast.makeText(getActivity(), Arrays.toString(currentTag), Toast.LENGTH_LONG).show();,则会显示 [1,2] ,所以我知道它们已添加好了。

我确实通过这样做来考虑使用标签:

 public static int KEY_COUNT=0; public static int KEY_VALUE=1;

 btn_question.setTag(KEY_VALUE,value);
 btn_question.setTag(KEY_COUNT,count);

但由于某些原因,当我添加多个标签时(因为我需要至少2个),布局中缺少我的动态按钮。但由于某些原因,只有1个标签 - 像这样btn_question.setTag(value);使用,它显示正常(我感觉它与我的片段的一些问题)。因此,我试图在此期间考虑解决方法。

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:2)

这是因为

currentTag[0].contains("1")

总是true。 currentTag的第一项始终包含“1”。

为什么不在按钮的onClick方法中执行String titleForFragment = myButton.getText(),而不是这样做?这样,您可以在所有按钮上设置相同的onClickListener,这将减少您需要编写的代码量。