2016-10-05 59 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( 「項目」, 「鋼筆」);

相關問題