2014-05-23 70 views
-1

我有一個通用列表,如下所示。如何從通用列表中讀取數據列表中的<T>

protected List<T> mItems; 

public ArrayAdapter(final List<T> objects, final boolean copyList) { 
     if (objects != null) { 
      if (copyList) { 
       mItems = new ArrayList<T>(objects); 
      } else { 
       mItems = objects; 
      } 
     } else { 
      mItems = new ArrayList<T>(); 
     } 
} 

我想從mItems特定位置得到一個整數值。其中mItems包含模型類的對象。

- 編輯 -

我沒有訪問模型類,這就是爲什麼它是List<T>否則我可以用List<MyModelClass>

回答

0

我不知道我理解正確的話,但怎麼樣:

public packagename.MyClass getItemAtPosition(int position) 
{ 
    Object item = mItems.get(position); 
    if(item instanceof packagename.MyClass) 
    { 
    return (packagename.MyClass)item; 
    } 
    return null; 
} 

有了這個,你將有機會獲得MyClass的所有方法,您可以從中提取整數。

由於您無法訪問MyClass的任何原因,您可以使用反射從項目中獲取整數。快速搜索應該讓你開始反思。

+0

的「項目」是不是返回一個Integer,而是返回一個類(MyClass)的對象,它有一個整數和一個字符串 – Androider

+0

@pokerface因此,轉換爲該對象並提取你想要的整數?另外,它聽起來像你需要泛型參數的邊界,或者你需要明確指定'List'的類型。這樣你就不必做任何演員了。 – awksp

+0

問題是我無法進行轉換,此代碼是MyClass無法訪問的庫的一部分。 – Androider

0

而不是泛型列表,您應該使用已聲明方法的接口(提取數據)。

+0

通用列表是庫的一部分,通過改變它會產生連鎖反應,所以我不能改變它。 – Androider

0

您應該使用

protected List<T extends YourClass> mItems; 

之後,你會看到YourClass

方法這是的代碼,你可以如何使用泛型類樣品:

public class GenericClass <T extends GenericClass.MyClass>{ 
    T object; 

public GenericClass(T object) { 
    this.object = object; 
} 

public void doSomething(){ 
    System.out.println(object.helloWorld()); 
} 

public static class MyClass{ 
    public String helloWorld(){ 
     return "Hello world"; 
    } 
} 
}