2013-01-02 6 views
0

순환 중에 List<Map<Integer, List<MyType>>을 만드는 방법을 누군가가 내 문제를 해결하는 데 도움을 줄 수 있습니까? 데이터베이스에서 데이터를 선택하고 개체를 추가하고 싶습니다. select의 where 조건을 List에 입력 한 다음 Map<Integer, List<MyType>에 넣습니다. 여기서 map 키는 데이터베이스 열 order_num의 정수입니다. 마지막으로 나는 생성 된 모든 맵을 List에 추가하고 싶다. 메서드의 반환 값은 List<Map<Integer, List<MyType>>>입니다.Android : Create List <Map <String, List <ObjectType>>

여기 소스의 내 부분 : 키 orderNum이고 값이 List<Item>입니다

while (cursor.moveToNext) { 
     int id = cursor.getInt(cursor.getColumnIndex("item_id")); 
     int orderNum = cursor.getInt(cursor.getColumnIndex("order_num")); 
     String name = cursor.getString(cursor.getColumnIndex("item_name")); 

     list.add(new Item(id, orderNum, name); 
    } 

가 지금은지도에이 목록을 추가하고 싶습니다.

int orderNum; 
for (cursor.moveToFirst; !cursor.isAfterLast(); cursor.moveToNext) 
{ 
    int id = cursor.getInt(cursor.getColumnIndex("item_id")); 
    orderNum = cursor.getInt(cursor.getColumnIndex("order_num")); 
    String name = cursor.getString(cursor.getColumnIndex("item_name")); 

    list.add(new Item(id, orderNum, name)); 
} 

map.put(orderNum, list); 

나는 전체 블록이 너무 루프 일종의 될 것이라고 생각, 그래서 때 루프 마감 : 루프 완료 때 당신이 그것을 사용할 수 있도록

답변

2

나는 루프 외부의 orderNum 변수를 선언 할 것 당신은 대신 해시 맵을 사용하여

masterList.add(map); 
+0

당신은 루프 내부의지도에 추가 할하지 않을까요? 그렇지 않으면 DB의 각 행 대신 하나의 데이터 세트 만 맵에 추가합니다. 아니면 내가 그 질문을 오해 했습니까? – codeMagic

+0

질문을 이해 했으므로 루프는 데이터베이스 쿼리에서 데이터 집합 목록을 만든 다음지도에 해당 목록을 추가하려고합니다. 각 항목은 쿼리 중 하나에 해당합니다. – Ralgha

+0

+1이 아마 맞는 것 같습니다. 나는 OP가 어떤 방식으로 그것을하고 싶어하는지 확실하지 않았기 때문에 단지 제안을했습니다. – codeMagic

0

타이를 할 수 있습니다. 이 작업이 가능할지 모르겠지만 적어도 시도해 볼 수는 있습니다.

HashMap<Integer, ArrayList<MyClass>> myMap = new HashMap<Integer, ArrayList<MyClass>>(); 

아마이뿐만 아니라 도움 : http://www.roseindia.net/javatutorials/javahashmap.shtml

관련 문제