Android ViewFlipper Как добавить дубликаты дочерних элементов и изменить определенный текст редактирования в каждом - PullRequest
0 голосов
/ 18 декабря 2010

Я установил ViewFlipper в своем приложении для Android, в котором будет размещаться ряд окон для отображения сообщений.Каждое окно должно соответствовать различному набору сообщений, аналогичному множеству открытых чатов.Для каждого окна я использую одно и то же представление window.xml, чтобы вывести его на экран, оно также имеет переменную для редактирования EditText.

Для справки я создаю и добавляю дочерние элементы следующим образом:

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        detector = new GestureDetector(this,this);
        setContentView(R.layout.viewflip);
        flipper = (ViewFlipper) findViewById(R.id.viewflip);

        addChild(flipper);
        addChild(flipper);
}

private void addChild(ViewFlipper flip){
     int index=0;
     View view = getView();

     if(flip.getChildCount()==0){
         flip.addView(view,index);
     }
     else{
     flip.addView(view,flip.getChildCount());
 }

 }

 private View getView(){
     LayoutInflater inflater = this.getLayoutInflater();
     View view = inflater.inflate(R.layout.window, null);        
     return view;
 }

Как видите, я в основном дублирую представление (я не уверен, что это правильный подход к моему дизайну).Поэтому, если бы я добавил что-то в функцию onCreate после добавления дочерних элементов, например

EditText messageHistoryText = (EditText) findViewById(R.id.messageHistory);         
        messageHistoryText.append("Testing :\n");

, я увидел бы текст в обоих окнах.

Я подумал, что что-то вроде этого будет лучше:

View v1 = flipper.getChildAt(1);
        EditText messageHistoryText2 = (EditText) v1.findViewById(R.id.messageHistory);
        messageHistoryText2.append("Testing2 :\n");

но когда я использую это, я вообще ничего не вижу.Возможно, есть ошибка при добавлении детей.Возможно, я не могу использовать то же представление, или, возможно, я выборочно изменяю EditText неверным способом.

Советы?

1 Ответ

2 голосов
/ 22 декабря 2010

Попробуйте следующее,

EditText messageHistoryText = flip.getChildAt(j).findViewById(R.id.messageHistory);

, где j представляет дочернюю позицию в ViewFlipper.

...