2012-01-17 7 views
-2

クリック/選択されたボタン/カテゴリーに応じて、テキストのリストを取得して表示しています。 私はまた、ユーザーがテキストを入力できるようにしようとしています、それはデータベースに保存され、表示されているアクティブ/選択されたカテゴリの現在のテキストのすべての下部に表示されます。私はデータベースから要素の数を取得し、データベースにデータを挿入しようとし、最後に新しい要素を挿入してビルドした後にすべての要素を取得しようとしているので、親ビューからすべての子ビューを削除しようとしました私はこのエラーを受けているのか、これが効率的な方法であるかどうかはわかりません。私をガイドしてください。データベースから更新された値をアンドロイドで表示することができません

public class Independent extends Activity implements OnClickListener { 
public TextView[] mainText; 
public LinearLayout[] textLayout; 
public LinearLayout textLayoutContainer; 
public ScrollView scrollView; 
EditText tv; 
int x, y, z; 
public String catagory; 

public Independent() { 
    catagory = ""; 
}// End of Constructor 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.catagories_list); 
    textLayoutContainer = (LinearLayout) findViewById(R.id.text_linearlayout); 
    scrollView = (ScrollView) findViewById(R.id.scrollView1); 
    Button addTextButton = (Button) findViewById(R.id.b_add); 
    Button editTextButton = (Button) findViewById(R.id.b_edit); 
    Button deleteTextButton = (Button) findViewById(R.id.b_delete); 
    addTextButton.setOnClickListener(this); 
    editTextButton.setOnClickListener(this); 
    deleteTextButton.setOnClickListener(this); 
    ImageButton generalButton = (ImageButton) findViewById(R.id.imageButton1); 
    ImageButton foodButton = (ImageButton) findViewById(R.id.imageButton2); 
    generalButton.setOnClickListener(this); 
    foodButton.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.imageButton1: 
     if (catagory == "General") { 
      Dialog gend = new Dialog(Independent.this); 
      gend.setTitle("Message"); 
      TextView tv2 = new TextView(Independent.this); 
      tv2.setText("General catagory is already selected."); 
      gend.setContentView(tv2); 
      gend.setCancelable(true); 
      gend.show(); 
     } else { 
      catagory = "General"; 
      IndependentDB genData = IndependentDB.getInstance(); 
      genData.open(this); 
      ArrayList<TextHolder> genList = new ArrayList<TextHolder>(); 
      genList = genData.getAllTextFromGenT(); 
      genData.close(); 
      x = genList.size(); 
      String xstr = new StringBuilder().append(x).toString(); 
      System.out.println(xstr); 
      mainText = new TextView[x]; 
      textLayout = new LinearLayout[x]; 
      if (!genList.isEmpty()) { 
       for (int i = 0; i < x; i++) { 
        TextHolder firstOne = genList.get(i); 
        String text = firstOne.getText(); 
        System.out.println("2"); 
        mainText[i] = new TextView(this); 
        System.out.println("3"); 
        mainText[i].setId(i); 
        System.out.println("4"); 
        mainText[i].setText("Text"); 
        System.out.println("5"); 
        mainText[i].setLayoutParams(new LayoutParams(
          LayoutParams.WRAP_CONTENT, 
          LayoutParams.WRAP_CONTENT)); 
        System.out.println("6"); 
        mainText[i].setTextSize(20); 
        System.out.println("7"); 
        mainText[i].setGravity(Gravity.CENTER); 
        System.out.println("8"); 
        mainText[i].setText(text); 
        System.out.println("9"); 
        textLayout[i] = new LinearLayout(this); 
        System.out.println("10"); 
        textLayout[i].setId(i); 
        System.out.println("11"); 
        textLayout[i].setLayoutParams(new LayoutParams(
          LayoutParams.FILL_PARENT, 
          LayoutParams.WRAP_CONTENT)); 
        System.out.println("12"); 
        textLayout[i].setGravity(Gravity.CENTER); 
        System.out.println("13"); 
        textLayout[i].addView(mainText[i]); 
        System.out.println("14"); 
        textLayoutContainer.addView(textLayout[i]); 
        System.out.println("15"); 
       } 
      } 
     } 
     break; 
case R.id.b_add: 
    textLayoutContainer.removeAllViews(); 
     tv = new EditText(this); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Please eneter the text below."); 
     builder.setCancelable(true); 
     builder.setView(tv); 
     builder.setPositiveButton("Save", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         boolean Success = true; 
         Editable ttv = tv.getText(); 
         final String stringttv = new StringBuilder() 
           .append(ttv).toString(); 
         if (stringttv == "") { 
          Dialog mTag = new Dialog(Independent.this); 
          mTag.setTitle("Missing Text"); 
          TextView tv2 = new TextView(Independent.this); 
          tv2.setText("Please enter the text you would like to add."); 
          mTag.setContentView(tv2); 
          mTag.setCancelable(true); 
          mTag.show(); 
         } else { 
          try { 
           if (catagory == "General") { 
            //Clearing View 
            IndependentDB idb0 = IndependentDB 
              .getInstance(); 
            idb0.open(Independent.this); 
            ArrayList<TextHolder> gentList = new ArrayList<TextHolder>(); 
            gentList = idb0.getAllTextFromGenT(); 
            int v = gentList.size(); 
            for (int i = 0; i < v; i++) { 
             textLayout[i].removeAllViews(); 
            }// End of for loop 
            idb0.close(); 

            //Inserting new text 
            IndependentDB idb1 = IndependentDB 
              .getInstance(); 
            idb1.open(Independent.this); 
            idb1.insertEventInGenT(stringttv); 
            idb1.close(); 

            //Getting the updated DB values/text 
            IndependentDB idb2 = IndependentDB 
            .getInstance(); 
            idb2.open(Independent.this); 
            //iddb.insertEventInGenT(stringttv); 
            ArrayList<TextHolder> genTList = new ArrayList<TextHolder>(); 
            genTList = idb2.getAllTextFromGenT(); 
            System.out.println("check1"); 
            int w = genTList.size(); 
            System.out.println("check2"); 
            if (!genTList.isEmpty()) { 
             for (int i = 0; i < w ; i++) { 
              TextHolder firstOne = genTList 
                .get(i); 
              System.out.println("check3"); 
              String text = firstOne 
                .getText(); 
              System.out.println("check4"); 
              mainText[i] = new TextView(
                Independent.this); 
              mainText[i].setId(i); 
              mainText[i].setText("Text"); 
              mainText[i] 
                .setLayoutParams(new LayoutParams(
                  LayoutParams.WRAP_CONTENT, 
                  LayoutParams.WRAP_CONTENT)); 
              mainText[i].setTextSize(20); 
              mainText[i] 
                .setGravity(Gravity.CENTER); 
              mainText[i].setText(text); 
              textLayout[i] = new LinearLayout(
                Independent.this); 
              textLayout[i].setId(i); 
              textLayout[i] 
                .setLayoutParams(new LayoutParams(
                  LayoutParams.FILL_PARENT, 
                  LayoutParams.WRAP_CONTENT)); 
              textLayout[i] 
                .setGravity(Gravity.CENTER); 
              textLayout[i] 
                .addView(mainText[i]); 
              textLayoutContainer 
                .addView(textLayout[i]); 
             }// End of for loop 
            }// End of If statement 
            idb2.close(); 
           } 
}catch (Exception e) { 
           Success = false; 
           String error = e.toString(); 
           Dialog d = new Dialog(Independent.this); 
           d.setTitle("Error"); 
           TextView tv = new TextView(Independent.this); 
           tv.setText(error); 
           d.setContentView(tv); 
           d.show(); 
          } finally { 
          } 
         } 
        } 
       }); 
     builder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
     break; 

    case R.id.b_edit: 
     break; 

    case R.id.b_delete: 
     break; 
    } 
} 

}

私は次のコード行削除before.Nowスタックトレースを投稿していないため申し訳ありません:私はもうArrayOutOfBound例外を得ていないが、私はまだだ

IndependentDB idb0 = IndependentDB 
              .getInstance(); 
            idb0.open(Independent.this); 
            ArrayList<TextHolder> gentList = new ArrayList<TextHolder>(); 
            gentList = idb0.getAllTextFromGenT(); 
            int v = gentList.size(); 
            for (int i = 0; i < v; i++) { 
             textLayout[i].removeAllViews(); 
            }// End of for loop 
            idb0.close(); 

を最後に挿入された値を取得できません。スタックトレースメッセージが現れたlogcatメッセージの最後の4行に続き

01-17 14:48:55.617: I/System.out(408): check3 
01-17 14:48:55.617: I/System.out(408): check4 
01-17 14:48:55.628: I/System.out(408): null null  [Ljava.lang.StackTraceElement;@44f9cd28 
01-17 14:48:56.309: D/dalvikvm(304): GC_EXPLICIT freed 208 objects/9952 bytes in 766ms 
01-17 14:49:05.149: D/dalvikvm(134): GC_EXPLICIT freed 719 objects/40696 bytes in 77ms 
+3

だから、あなたは例外があります。私たちは、この巨大なコードのどこで起こったのでしょうか?少なくとも、スタックトレースを提供し、例外の原因となる行がコードのどの行であるかを教えてください。 –

+0

私はいくつかの変更を加え、ArrayIndexOutOfBound例外がなくなったが、私はまだ最後に新しく追加された値を取得して表示することができませんでしたスタックトレースを追加しました。 – Viking

答えて

0

は、この問題を解決しました。 データベースに新しく追加された値を挿入していますが、データベースに依存せず、検索して表示しますが、新しいtextviewを作成しました。私はedittextからテキストを直接取得し、 .it worked :)

関連する問題