2016-10-05 43 views
0

下面是我的模型:用于定义的Arralist如何从ArrayList中获得指数包含字符串

public class Products { 

    String date = "", item = ""; 

    public Products() { 

    } 
    public Products (String date String item) { 
     this.date = date 
     this.item = item ; 
    } 

    public String getdate() { 
     return date 
    } 

    public void setdate (String date) { 
     this.date = date 
    } 

    public String getitem() { 
     return item 
    } 

    public void setitem (String item) { 
     this.item = item 
    } 
} 

而下面的代码:

private ArrayList<TasksCharts> mArrayList; 

和我有ArrayList中的数据:

position 0 -> date - "2016-10-02" , item = "pens" 
position 1 -> date - "2016-10-03" , item = "xyz" 
position 2 -> date - "2016-10-03" , item = "fts" 

现在我想要包含“笔”的ArraList的位置。所以,我已经eritten下面的代码:

if (containsSubString(mArrayList, "pens")) { 
    int listIndex = getItemPos("pens"); 
    } 


private int getItemPos(String item) { 
     return mArrayList.indexOf(item); 
    } 

当我欠幅脉冲这样它会给我-1索引项pens

如何获得特定项目的索引?

+0

你在哪里定义了'containsSubString'? – SMA

回答

3

是否TasksCharts包含pens的对象等于包含pens的字符串对象?

除非你覆盖了equals方法,否则我会说“不”。

我会建议你使用地图,而不是或你将不得不遍历查找包含pens

3

一个TasksCharts对象可以用于循环运行即可完成任务。

private int getItempos(ArrayList<TasksCharts> mArrayList, String str) 
{ 
    for(int i=0;i<mArrayList.size();i++) 
    { 
    if(mArrayList.get(i).item.indexOf(str)!=-1) 
    { 
     return i; 
    } 
    } 
    return -1; 
} 

希望这会有所帮助!

1

我只是在同一个ArrayList中添加产品,然后使用for-loop来查找产品位置。

ArrayList<Products> mArrayList = new ArrayList<>(); 

Products products1 = new Products("2016-10-05", "Pens"); 
Products products2 = new Products("2016-10-04", "Pencil"); 
Products products3 = new Products("2016-10-03", "Book"); 
Products products4 = new Products("2016-10-02", "Dairy"); 


mArrayList.add(products1); 
mArrayList.add(products2); 
mArrayList.add(products3); 
mArrayList.add(products4); 

for (Products products : mArrayList) { 
    if (products.getitem().equals("Pens")) { 
     Log.d("Position", mArrayList.indexOf(products) + ""); 
    } 

} 

这会给输出

D/Position: 0 
2

你应该做某事是这样的:

  private int getItemPos(String key , String item) { 
      int i = 0; 
      for (i=0; i<mArrayList.size(); i++) 
      { 
       if(mArrayList.get(i).get(key).equalsIgnoreCase(item)) 
       { 
        return i; 
       } 
      } 
      return -1; 
     } 

,并呼吁

INT X = getItemPos( “项目”, “钢笔”);

相关问题