Макет не раздувать - PullRequest
       30

Макет не раздувать

0 голосов
/ 21 октября 2018

приведенный ниже код используется для создания списка заметок.Я хочу взять название заметки и добавить в динамический макет.но компоновка не надувается.

public class TakeNote extends AppCompatActivity {

List<String> titles = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_take_note);
    reader();
    LinearLayout layout = (LinearLayout) findViewById(R.id.tn);
    try {
        addlist(titles, layout);
    }
    catch(Exception e){

    }
}

это читает файл, в котором хранятся заголовки ...

 public void reader(){


        try {
            Scanner sc = new Scanner(openFileInput("titles.txt"));
            while(sc.hasNextLine()){
                titles.add(sc.nextLine());
            }
            sc.close();

        }
        catch(Exception e){
        }

    }

это записывает заголовки в файл.

 public void writer(String title){
    try {
        PrintStream write = new PrintStream(openFileOutput("titles.txt", MODE_PRIVATE | MODE_APPEND));
        write.println(title);

        write.close();
    }
    catch(Exception e){

    }

}
ArrayAdapter<String> adap;

private void addlist(List<String> l,LinearLayout layout){
    View v = getLayoutInflater().inflate(R.layout.newnote,null);
    adap = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, l);
    ListView list = (ListView) findViewById(R.id.tit);
    try {
        list.setAdapter(adap);
    }
    catch(Exception e){}
    layout.addView(v);

}

при нажатии кнопки «Добавить» появится диалоговое окно для ввода названия заметки.

 public void addnote(View view) {
    LayoutInflater layoutInflater = LayoutInflater.from(this);
    View promptView = layoutInflater.inflate(R.layout.addworddialog, null);
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    // set prompts.xml to be the layout file of the alertdialog builder
    alertDialogBuilder.setView(promptView);
    final EditText input = (EditText) promptView.findViewById(R.id.nw);
    // setup a dialog window
    alertDialogBuilder
            .setCancelable(false)
            .setPositiveButton("ADD", (dialog, id) -> {
                // get user input and set it to result
                writer(input.getText().toString());

            })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
    // create an alert dialog
    AlertDialog alertD = alertDialogBuilder.create();
    alertD.show();
    LinearLayout layout = (LinearLayout) findViewById(R.id.tn);
    addlist(titles,layout);
}
}

также нет ошибок во время всего процесса.
просто не отображается новый макет списка

1 Ответ

0 голосов
/ 21 октября 2018
alertD.show();
LinearLayout layout = (LinearLayout) findViewById(R.id.tn);
addlist(titles,layout);

Dialog.show не блокируется, поэтому titles, вероятно, не изменится при вызове addlist, что приведет к поведению, которое вы видите.

Кроме того, изменив "заголовки".txt "файл не означает, что список прочитанных заголовков с использованием reader() изменится.

...