我正在以编程方式创建一个带按钮的复选框列表。为了更新目的,我需要删除旧的复选框列表和按钮,然后在删除_ GONE
中创建新的复选框列表和按钮。如何在delete_element
方法中将其可见性设置为GONE
?在将它们设置为delete_element
之前,如何检查它们是否已存在?如何在 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() {
}
}
我
MainActivity中的java.lang.NullPointerException:尝试调用虚方法&#39; void android.widget.Button.setVisibility(int)&#39;在空对象引用上
代码:
Enumerable.ToList
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
我会在convertView
中的项目视图(ListView
)中添加点击监听器 - 如果您可以点击该项目,则必须可见。然后,如果您希望将convertView完全删除,可以将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,它有一些好主意