2015-10-01 5 views
0

Я пытаюсь отобразить кнопку удаления в каждом элементе списка в моем списке, когда нажата кнопка редактирования. Я использую setVisibility в другом месте приложения, поэтому я попытался скопировать этот код, но проблема в том, что элементы макета в элементах списка не являются частью XML-файла макета, который реализует фрагмент, они находятся в специальном, используемом мой CursorAdapter. Я могу найти нужные скрытые элементы, используя макетный инфлятор, поэтому я больше не получаю исключение nullPonterException, однако видимость не изменяется при нажатии кнопки так, как должно.Android, установите видимость в макете списка элементов

//  Onclick method for Edit button 
    final Button buttonE = (Button) rootView.findViewById(R.id.editNotesButton); 
    buttonE.setTag(0); 
    //cannot use rootView as that points to fragment_main 
    final LayoutInflater factory = getLayoutInflater(savedInstanceState); 
    final View noteItemView = factory.inflate(R.layout.note_list_view_item, null); 

    final LinearLayout deleteButton = (LinearLayout) noteItemView.findViewById(R.id.delete_button_group); 
    final LinearLayout circleButton = (LinearLayout) noteItemView.findViewById(R.id.circle_button_group); 
    buttonE.setOnClickListener(new View.OnClickListener() {public void onClick(View v) { 

      final int status =(Integer) v.getTag(); 
      if(status == 1) { 
       buttonE.setText("Edit"); 
       circleButton.setVisibility(View.VISIBLE); 
       deleteButton.setVisibility(View.GONE); 
       v.setTag(0); //pause 
      } else { 
       buttonE.setText("Done"); 
       circleButton.setVisibility(View.GONE); 
       deleteButton.setVisibility(View.VISIBLE); 
       v.setTag(1); //pause 
      } 
     } 
     } 

    ); 

ответ

0

        Во-первых, я понять, почему ваш код не work.You раздувать noteItemView, но не связывается с просмотра на экране, то есть ваш «noteitemview» не будет показать навсегда, поэтому ваша кнопка удаления в этом представлении не будет заметна.
        Затем я покажу свое решение. Как вы говорите, в каждом элементе списка есть кнопка удаления, вам нужно контролировать их видимость, поэтому сначала убедитесь, что в вашем представлении, привязанном к элементу listview, есть такая кнопка, как дочерний элемент вида viewview. В вашем getView custom CursorAdapter, добавьте логику, чтобы обрабатывать видимость кнопки удаления, например, каждый элемент списка имеет логическую переменную с именем isDeleteButtonShow, а затем управляет значением переменной для управления видимостью кнопки удаления, когда видимость должна измениться, обновить привязку данных к списку и позвоните по телефону adapter.notifyDataSetChanged. Упование, которое может вам помочь.

+0

Основываясь на этом методе, я получил его на работу, как вы сказали, я по сути определил, будет ли кнопка удаления там или нет в bindView и будет обновлена, как только я изменил логическое значение, спасибо. –

Смежные вопросы