I do not understand what is wrong.
I use
public class UrlArrayAdapter extends BaseAdapter {...
ArrayList<UrlItem> objects;
UrlArrayAdapter(Context context, ListView urlListView,
ArrayList<UrlItem> urlLists) {
objects = urlLists; ...
public void deleteItem(int numberToDelete) {
objects.remove(numberToDelete);
notifyDataSetChanged();
}
And (the most interesting)
I get numberToDelete = 1
Then this line is deleted

but objects

and when numberToDelete = 0
Then this line is deleted

but objects

And when numberToDelete = 2
objects

but after notifyDataSetChanged (); IndexOutOfBoundException
I already have a message ... but I can not solve this problem
IndexOutOfBoundException when I use notifyDataSetChanged
stackoverflow.com/a/9260757/1568164 I feel like the situation is, I use, but not work
Then I get a position for further deletion
public View getView(int position, View convertView, ViewGroup parent) {
UrlItem urlItem = (UrlItem) this.getItem(position);
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = lInflater.inflate(R.layout.database_table_item, null);
viewHolder = new ViewHolder();
viewHolder.checkbox = (CheckBox) convertView
.findViewById(R.id.checkBox1);
viewHolder.checkbox.setOnCheckedChangeListener(listener1);
viewHolder.text = (EditText) convertView
.findViewById(R.id.editText1);
viewHolder.text
.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
int getPosition = (Integer) v.getTag();
if (!hasFocus) {
final EditText Caption = (EditText) v;
objects.get(getPosition).setUrl(
Caption.getText().toString());
} else {
DatabaseTable.setPosition(getPosition);
}
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.checkBox1, viewHolder.checkbox);
convertView.setTag(R.id.editText1, viewHolder.text);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.text.setTag(position);
viewHolder.text.setText(urlItem.getUrl());
viewHolder.checkbox.setTag(position);
viewHolder.checkbox.setChecked(urlItem.getUse());
return convertView;
}
My main Activity, in which I call the delete line
public class DatabaseTable extends Activity {
private Settings setting;
private ArrayList<UrlItem> urlLists;
private ListAdapter uAdapter;
private ListView urlListView;
static int position;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.database_table_list);
LBD conection = new LBD(this);
conection.open();
setting = conection.tblSettings();
setting.create();
urlLists = setting.selectRssTable();
urlListView = (ListView) findViewById(R.id.listView1);
uAdapter = new UrlArrayAdapter(DatabaseTable.this, urlListView,
urlLists);
urlListView.setAdapter(uAdapter);
urlListView.setItemsCanFocus(true);
}
public static void setPosition(int pos) {
position = pos;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, 2, 2, "Delete URL");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 2:
((UrlArrayAdapter) uAdapter).deleteItem(position);
break;
}
return super.onOptionsItemSelected(item);
}
}
continuation of the topic I experimented and came to the conclusion that the lines in the list of adapters have little in common with the fact that the output to the screen, so the problem changes. you need to understand how to remove lines from the screen