2016-07-18 8 views
-4

list [0]、list [1]、list [2]の3つの配列があります。 リスト[1]を取得したいサブジェクト名とサブジェクトの名前がサーバーから来ています。List <>の配列から値を取得する方法

以下

は私が必要と出力されます:

学生対象:

数学

物理

化学

ヒンディー語

E日本語

道徳科学

しかし、私は

学生科目取得しています:

数学

物理

化学

なぜ起きているのか分かりません。私は、コードのこの部分を使用しています

  List<Items>[] students = ActivityStudents.getStudentDetails(); 

      for (int i = 0; i < students[1].size(); i++) { 
       subjects.append("\n" + students[1].get(i) + "\n"); 
      } 

助けてください。

+2

私はあなたが達成しようとしていることや問題/質問が何であるかを理解していません - 明確にしてください。また、質問を改善するためのヒントについては[ask]ページを読んでください。他の人が簡単に助けてくれるようにコードを正しくフォーマットすることも含まれます – ochi

+2

これは配列で埋められた 'List'ではありません。リスト 's。 – Zircon

+1

少なくとも関数の 'getStudentDetails()'宣言を含めることができますか? – Adam

答えて

0

あなたは同じ長さのアイテムのリストに頼っています。これは明らかにそうではありません。あなたはそれを記述したようlists[0]あなたは、lists[1]はあなたがlists[0]で見つけるように私はおそらく必要とされていないデータ構造を理解していないものの、あなたが3

で停止してあなたが唯一、できるだけ多くのアイテムを収集6.含まれ、3つの要素が含まれています最大のリストサイズまでカウントしてから、ループ内のより短いリストを処理する必要があります。

リストを別々にループします。

List<Items> results = new ArrayList<Items>(); 
List<Items>[] lists = ActivityStudents.getStudentDetails(); 

int maxIdx = Math.max(lists[0].size(), lists[1].size(); 
maxIdx = Math.max(maxIdx, lists[2].size()); 

for (int i = 0; i < maxIdx; i++) { 
    Items items= new Items(SOURCE); 
    if(i < lists[0].size()) items.set("STUDENT", lists[0].get(i)); 
    if(i < lists[1].size()) items.set("SUBJECTS", lists[1].get(i)); 
    if(i < lists[2].size()) items.set("MARKS", lists[2].get(i)); 
    results.add(items); 
} 
+0

お試しください。リスト[0]、リスト[1]、lis [2]はすべて6つの要素を含んでいます。私のコーディングの最初の部分では、変更は必要ありません。変更は別のクラスで行われます – user6434454

+0

それは私に正確な解決策を与えません。私は6,6,6を得ている。私はその番号を望んでいない。リスト[1]の項目名を表示したい。 – user6434454

+0

コードを投稿してください。これは意味がありません。 – thst

関連する問題