2015-06-01 3 views
0

Я создаю список флажков с помощью кнопки программно. Для целей обновления мне нужно удалить старый список и кнопку флажка перед созданием нового в delete_ element method. Как установить видимость в GONE в методе delete_element? Как я могу проверить, существуют ли они уже или нет, прежде чем установить их на GONE? Как я могу получить свой идентификатор в delete_element меняУстановите кнопку «Показать» и установите флажок «GONE»

java.lang.NullPointerException: Попытка вызвать виртуальный метод «недействительным android.widget.Button.setVisibility (INT)» на нулевой ссылки на объект

код в MainActivity:

ArrayList<Integer> items = new ArrayList<Integer>(); 
    LinearLayout ll; 
    . 
    . 
    . 
    . 
    @Override 
    public void onAsyncTaskFinished(ArrayList<Integer> result) { 

     remove_elements(); 
     createCheckboxList(result); 


    } 

    private void remove_elements() { 
     for (int i : items) { 
      CheckBox ch = (CheckBox) findViewById(i); 
      ch.setVisibility(View.GONE); 
     } 
     Button btn = (Button) findViewById(1); 
     btn.setVisibility(View.GONE); 

    } 

    private void createCheckboxList(final ArrayList<Integer> items) { 
     this.items = items; 
     final ArrayList<Integer> selected = new ArrayList<Integer>(); 

     ll = (LinearLayout) findViewById(R.id.lila); 
     for (int i = 0; i < items.size(); i++) { 
      CheckBox cb = new CheckBox(this); 
      cb.setText(String.valueOf(items.get(i))); 
      cb.setId(items.get(i)); 
      ll.addView(cb); 

     } 
     Button btn = new Button(this); 
     btn.setLayoutParams(new LinearLayout.LayoutParams(500, 150)); 
     btn.setText("submit"); 
     btn.setId(1); 
     ll.addView(btn); 

     btn.setOnClickListener(new View.OnClickListener() { 
    } 
} 
+1

, но почему нужно удалить, просто проверьте перед добавлением новых данных l ike адаптер не имеет значения null и имеет счет, если да, чем чистый адаптер и устанавливает адаптер с новыми данными каждый раз, когда он первый раз. –

ответ

0

Попробуйте это:

private void remove_elements() { 
    for (int i : items) { 
     CheckBox ch = (CheckBox) ll.findViewById(i); 
     ch.setVisibility(View.GONE); 
    } 
    Button btn = (Button) ll.findViewById(1); 
    if (btn != null) { 
     btn.setVisibility(View.GONE); 
    } 

} 
0

Я бы добавил прослушиватель Click к представлению элемента (convertView) в ListView - Если вы можете щелкнуть элемент, он должен быть виден. Затем вы можете установить convertView в INVISIBLE или GONE, если хотите, чтобы его полностью удаляли.

Вот некоторые примеры кода для вас адаптерами getView метод

public View getView(final int position, View convertView, ViewGroup parent) { 

final ViewHolder holder; 

if (convertView == null) { 
    convertView = mInflater.inflate(R.layout.text_view, null); 

    holder = new ViewHolder(); 
    holder.image = (ImageView) convertView.findViewById(R.id.iAccept); 
    ...... 
    convertView.setTag(holder); 
} else holder = (ViewHolder) convertView.getTag(); 

//Do this!! 
convertView.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     v.setVisibility(View.INVISIBLE); 

    } 
}); 

... 
... 
//Set your values here for the ListView. 

return convertView; 

}

Вы должны будете держать внешний список объектов, чтобы узнать, какой из них является VISIBLE или INVISIBLE

Смотреть это question, у него есть несколько хороших идей