如何从自定义arraylist获取特定字符串的索引

时间:2019-06-26 12:44:07

标签: java android

我想获取函数返回的值的索引,但它只给我-1值。

ArrayList<categoryoptions_class> arrayList;
rb = new RadioButton[arrayList.size()];

            for (int i = 0; i < arrayList.size(); i++) {
                rb[i] = new RadioButton(detail_activity_rb.this);
                rb[i].setPadding(5,5,5,5);
                rb[i].setId(arrayList.get(i).getId());
                rb[i].setTag(arrayList.get(i).getValue());
                rb[i].setText(arrayList.get(i).getCategory_opt_name());

                String a = checkdata(cat_id, rb[i].getId(), i);
// this 'a' is returning perfect value but when i am trying to get the index of the value in a it gives me only -1; 

int sa = Arrays.asList(arrayList).indexOf(a);
Toast.makeText(detail_activity_rb.this, sa + " :val", 
Toast.LENGTH_LONG).show();

                //  int sa = i;
                if (i == sa) {
                    rb[i].setChecked(true);
                }

                rg.setPadding(5,5,5,5);
                rg.addView(rb[i]);
                checkpos(i,i);
}

 public String checkdata(int cat_ids, int optids, int ia) {
    String a = cat_ids + "";
    String b = optids + "";
    String c  = ia + "";
    String aa = a + b;
    Cursor cursor;
   // Toast.makeText(getApplicationContext(),aa,Toast.LENGTH_LONG).show();
    if(cat_type.equals("rb1"))
    {
         cursor = dbController.getdata("SELECT * FROM store_values WHERE catopt_id = '"+cat_ids+"';");
    }
    else
    {
         cursor = dbController.getdata("SELECT * FROM store_values WHERE catopt_id = '"+aa+"';");
    }

    //   arrayList.clear();
    if (cursor.getCount() != 0)
    {
        String val = "";
        while (cursor.moveToNext())
        {
            val = cursor.getString(8);
        }
        //Toast.makeText(detail_activity_rb.this,"H",Toast.LENGTH_LONG).show();
        return val;
    }
    else
    {
        return "not";
    }

}

3 个答案:

答案 0 :(得分:1)

这里:

int sa = Arrays.asList(arrayList).indexOf(a);

那根本没有道理。 arrayList被声明为:

ArrayList<categoryoptions_class> arrayList;

因此,您正在做的是:将ArrayList<categoryoptions_class>变成List<ArrayList<categoryoptions_class>>。然后,您询问该列表是否包含字符串

可以肯定的列表列表包含一个String对象。

不幸的是,您的其余代码太混乱了,使我无法告诉您必须如何“搜索” arrayList对象。

答案 1 :(得分:1)

由于您的数组列表属于categoryoptions_class类型,但是您想要通过索引获取的是字符串,因此它显然将返回-1(未找到)。您可以输入以下内容:

  • 如果您的categoryoptions_class包含字符串类型的数据成员 并且您想要比较与此数据成员匹配的对象 然后遍历arraylist并访问每个数组的数据成员 对象,然后在匹配时中断,否则打印-1。
  • 否则,如果您的 categoryoptions_class不会将任何数据成员作为字符串进行比较 您将需要构造一个categoryoptions_class对象, 那么您可以使用indexOf选项。

答案 2 :(得分:0)

int index= 0;
                    for (categoryoptions_class categoryoptions_class : arrayList) {
                        if (categoryoptions_class.getCategory_opt_name().equals(a)) {
                            index= arrayList.indexOf(categoryoptions_class);
                            Log.d("Position", mArrayList.indexOf(products) + "");

                        }

                    }