У меня есть ArrayList в активности, которая заполняет listView с использованием пользовательского класса адаптера. Код класса адаптивного адаптера находится в пределах активности, а код адаптера базы данных находится в той же самой активности за пределами настраиваемого класса адаптера. Я не могу понять, как вызвать NotifyDataSetChanged() вне класса пользовательского адаптера в активности после обновления базы данных для обновления спискаView. Я знаю, что мне нужно как-то создавать ссылки, поэтому я могу вызвать NotifyDataSetChanged() в пользовательском классе адаптера listView, но через несколько дней это все еще ускользало от меня. Поверьте мне, я читал и пробовал все решения здесь, и я все еще не могу понять это. Любая помощь будет оценена по достоинству.Как вызвать NotifyDataSetChanged() вне класса адаптивного адаптера?
public class getServers extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.server_list);
//ServerList ArrayList
ArrayList<ServerList> Items = new ArrayList<ServerList>();
//Create the listview
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(new ServerItemAdapter(this, R.layout.server_list_item, Items));
listView.setTextFilterEnabled(true);
//Updates the server status to 0 (Forget)
public void updateServerStatus(Integer pos) {
String ID = gstrServerMacs[pos];
//Open the connection to the database adapter
DBAdapter db = new DBAdapter(this);
db.open();
//Do the update
Cursor c = db.updateStatus(ID);
c.moveToFirst();
db.close();
c.close();
//Fill the arrays with the updated data from th db
getServerList();
**I NEED TO CALL NotifyDataSetChanged() HERE!!!**
}
//LISTVIEW CLASS START/////////////////////////////////////////////////////////////////////
public class ServerItemAdapter extends ArrayAdapter<ServerList> {
private ArrayList<ServerList> Items;
//private String[] values;
public ServerItemAdapter(Context context, int textViewResourceId, ArrayList<ServerList> Items) {
super(context, textViewResourceId, Items);
this.Items = Items;
}
@SuppressLint("UseValueOf")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.server_list_item, parent, false);
}
//Array adapter
public class ServerList {
public String ServerName;
public String ServerMAC;
public String ServerIP;
public ServerList(String ServerName, String ServerMAC, String ServerIP) {
this.ServerName = ServerName;
this.ServerMAC = ServerMAC;
this.ServerIP = ServerIP;
}
}
есть у попытался назвать его из экземпляра пользовательский адаптер? –
Мне нужно вызвать его из метода, который обновляет базу данных, которая находится за пределами пользовательского класса адаптера. – raximus
можете отправить свой код? –