2017-09-21 4 views
0

私はアンドロイドスタジオで新しいです、 私はlistItemで作業しています。以下は私のコードの一部ですアンドロイドスタジオで2D配列を操作する

String[] items = { 
      "1 st", 
      "2 nd", 
      "3 rd", 
      "4 th"}; 

    titleList = new ArrayList<>(Arrays.asList(items)); 

    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList); 


    listView.setAdapter(adapter); 

上記のコードは正常です。しかし、私はより多くの1つの配列ツリーで作業したい2D配列で作業したいのですが、私が試した新しいコードはここで何をするのか理解できません。しかし

String[][] items = { 

      {"1 st","12 th Sept"}, 
      {"2 nd","13 th Sept"}, 
      {"3 rd","14 th Sept"}, 
      {"4 th","15 th Sept"}, 
}; 

titleList = new ArrayList<>(Arrays.asList(items[0])); 
dateList = new ArrayList<>(Arrays.asList(items[1])); 

    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList); 
    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.date,dateList); 

    listView.setAdapter(adapter); 
+0

このリンクが何らかの理由で役立つかどうかをご覧ください。 https://stackoverflow.com/questions/5176512/android-two-dimensional-arraylist-help –

答えて

0

を失敗した私は、その配列のインスタンス化が正しい構文であると思いますが、あなたは2x4の配列をしたいように見える4×2の配列を、作成しています。

String[][] items = { 
     {"1 st", "2 nd", "3 rd", "4 th"}, 
     {"12 th Sept", "13 th Sept", "14 th Sept", "15 th Sept"}, 
}; 
+0

今すぐタイトルが表示されていません –

+0

@SUJOYROY私は私の答えで言ったように、それは動作しません。カスタムArrayAdapterを作成する必要があります。 –

+0

@SachinAggarwalあなたの答えにあなたの提案されたページを訪問しました。しかし、私は私のプロジェクトで何をすべきか理解できません。私はアンドロイドスタジオで新しいです –

0

1)あなたは以下のようなあなたの2d arrayの順序を変更する必要があります。

は、あなたがしようとしています。しかし、それはまだ

String[][] items = { 
     {"1 st", "2 nd", "3 rd", "4 th"}, 
{"12 th Sept", "13 th Sept", "14 th Sept", "15 th Sept"}, 
    }; 
以下

2)は、最初の行では、あなたのadaptertitlelistArrayAdapterに参照のうえされ、次の行では、あなたが同じを変更している(次のポイントを参照してください)動作しません。 adapter objectからdatelistArrayAdapterを指します。

adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList); 
adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.date,dateList); 

ので、2行目の後に、お使いのアダプタがtitlelist ArrayAdapterを指し、もはやありません。これはdatelist ArrayAdapterのみを指しています。実際には、datelisttitlelistの両方を同時に保持することはできません。

正しい方法は何ですか?

以下のようなtitledateを含むモデルclassを作成します -

class YourModel { 
String title; 
String date; 
} 

このモデルクラスのオブジェクトのarrayを作成し、カスタムadapterにオブジェクトのこの配列を渡します。それはの方法です。カスタムArrayAdapterを作成する必要があります。 hereからそれについて学んでください。

0

2次元は、配列を要素として含む配列です。これらの要素または配列は、同じ長さまたは同じ数のint値を持ちます。

int[][] myArray= new array[3][2];は、2つのint値(デフォルトでは0)を持つ3つの配列を含む配列であることを意味します。

myArray[0] = {0,0}; 
myArray[1] = {0,0}; 
myArray[2] = {0,0}; 

それともあなたは、あまりにも様々なサイズを持つ1次元配列が含まれている2次元配列を宣言することができます 3行2列に3x2の行列として解釈することができます。

int[][] otherArray= new array[3][]; 
otherArray[0] = new array[3]; 
otherArray[1] = new array[4]; 
otherArray[2] = new array[5]; 

または、要素に初期値を割り当てることができます。

otherArray[0] = {1,2,3}; 
otherArray[1] = {4,5,6,7}; 
otherArray[2] = {1,2,3,4,5}; 

今、あなたはotherArrayは、[2] [4] 5を返しますが、あなたはotherArrayは、[1]〜[4]それは存在しIndexOutOfBoundExceptionを返していないので、取得することはできません得ることができます。 2次元配列は、配列を含む配列です。