2017-12-07 7 views
-3

Iは受信機として(他のタブにlistviewの名前と説明を入力するために使用content edittext1edittext2)は、2つのタブ、送信者とTAB1とアプリとTAB2を作成した(content listview配列インデックスアウト例外長= 1、インデックス= 1

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at twenty_four.way.com.NoteTaker.FragmentTwo.showData(FragmentTwo.java:54) at twenty_four.way.com.NoteTaker.FragmentTwo.onViewCreated(FragmentTwo.java:47)

このDB_Sqlite.java場合:

)、私の問題は、これが logcatエラーです データベースからデータを取得し、 listviewNameと分離 description」にそれを置くです

}

このFragmentTwo.java場合:

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    db=new DB_Sqllite(getActivity()); 

    listView = (ListView) view.findViewById(R.id.list_view); 

    //here we need to pass Context and arraylist 
    adapter = new MessageAdapter(getActivity(), arrayList); 

    listView.setAdapter(adapter); 
    showData(); 
} 
public void showData() { 

    ArrayList<String> listData = db.getAllrecord(); 
    ArrayList<MessageModel> arrayList = new ArrayList<>(); 
    for (int i=0; i<listData.size()-1; i++) { 
     String Name = listData.get(i).split(" - ")[0];; 
     String Desc =listData.get(i).split(" - ")[1]; 

     MessageModel messageModel = new MessageModel(); 

     messageModel.setTitle(Name); 
    // messageModel.setDesc(Desc); 

     messageModel.setPrio(true,false); 

     arrayList.add(0,messageModel); 

    } 

    MessageAdapter adapter; 
    adapter = new MessageAdapter(getActivity(), arrayList); 
    listView.setAdapter(adapter); 
} 
public void displayReceivedData(MessageModel messageModel) { 
    arrayList.add(0, messageModel); 
    adapter.notifyDataSetChanged(); 

} 
+0

Javaの配列のインデックス*常に* 0から始まる – Lino

+1

長さが1の場合、最大インデックスは0です(長さは配列内の要素数を示し、配列は0から数え始めます)。 – AntonH

+0

@LinoのJavaでは、配列インデックスが1から始まるプログラミング言語があります。 – Immac

答えて

0

あなたはエラーがどこから来ている示してデバッグ情報を含めていないが、それは例外から来ていない明らかですリストまたはforループ。 forループは、listDataの末尾を超えて決してアクセスしません。

例外はここから来て(ほとんどの場合)です。

String Desc =listData.get(i).split(" - ")[1]; 

あなたはsplitの結果はあなたにそれに少なくとも2つの項目を持つ配列を与えることを想定しています。そうでない場合は、エラーが返されます。この例外を解釈する方法については、this同様の質問(C#用ですが、同じ原則が適用されます)を参照してください。

これはデータの整合性の問題であるか、有効なケースで処理する必要があるかどうか - このケースをどのように処理するかはあなた次第です。

関連する問題