Доброго времени суток Есть Основной класс MainActivity который запускает сервис и подключается к адаптеру Код: Код | package ru.myscanner.scannerth;
import android.app.ListActivity; import android.content.Intent; import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends ListActivity { SqlAdapter adapter; ListView listView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setUpView(); startService(new Intent(this, CatalogService.class)); } public void setUpView() { listView = getListView(); adapter = new SqlAdapter(this); setListAdapter(adapter); } }
|
В сервисе происходит вставка данных и вызов команды обновления данных в адаптере Код: Код | public void ScnCatalog(){ String insbd = null; String[] insertBd = null; ArrayList<String> listCatalog = null; ArrayList<String> listCatalogBd = null; listCatalog = getCatalog(); listCatalogBd = getCatalogBd(); listCatalog.removeAll(listCatalogBd); insertBd = listCatalog.toArray(new String[listCatalog.size()]); Intent intentCncCord = new Intent(this, CncCord.class); for(int i = 0; i <= insertBd.length - 1; i++) { insbd = insertBd[i]; if(insbd!=null){ db.insert(insbd); startService(intentCncCord.putExtra("name", insbd)); } } db.close(); SqlAdapter adapter; adapter = new SqlAdapter(this); adapter.refresh(); }
|
Вопрос в том что все нормально отрабатывается и без ошибок, но при этом на экране данные неменяются. В чем может быть дело. Может в разных экземплярах класса SqlAdapter в MainAdapter и сервисе? Добавлено через 13 минут и 24 секундыКод адаптера: Код | package ru.myscanner.scannerth;
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.CursorIndexOutOfBoundsException; import android.database.sqlite.SQLiteDatabase; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView;
public class SqlAdapter extends BaseAdapter{ static final String DB_NAME = "my.db"; static final int DB_VERSION = 1; static final String CATALOG_TABLE = "catalogtable"; static final String CATALOG_ID = "_id"; private static final int ID_COLUMN = 0; static final String CATALOG_NAME = "catalogname"; private static final int NAME_COLUMN = 1; private Cursor cursor; private SQLiteDatabase database; DBHelper dbOpenHelper; private Context context; public SqlAdapter(Context context) { super(); this.context = context; init(); }
private void init() { DBHelper db = new DBHelper(context); database = db.getWritableDatabase(); cursor = getAllEntries(); }
@Override public int getCount() { return cursor.getCount(); }
@Override public Name getItem(int position) { if(cursor.moveToPosition(position)){ long id = cursor.getLong(ID_COLUMN); String name = cursor.getString(NAME_COLUMN); Name nameOnPositon = new Name(id, name); return nameOnPositon; }else{ throw new CursorIndexOutOfBoundsException("Cant move cursor to postion"); } }
@Override public long getItemId(int position) { Name nameOnPosition = getItem(position); return nameOnPosition.getId(); }
@Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView; if (null == convertView) { textView = (TextView) View.inflate(context, R.layout.list_item, null); } else { textView = (TextView) convertView; } textView.setText(getItem(position).getName()); return textView; } public Cursor getAllEntries() { String[] columnsToTake = { CATALOG_ID, CATALOG_NAME }; return database.query(CATALOG_TABLE, columnsToTake, null, null, null, null, CATALOG_ID); } public long addItem(String name) { ContentValues values = new ContentValues(); values.put(CATALOG_NAME, name); long id = database.insert(CATALOG_TABLE, CATALOG_NAME, values); refresh(); return id; } public void onDestroy() { dbOpenHelper.close(); } public void refresh() { cursor = getAllEntries(); notifyDataSetChanged(); }
}
|
|