В общем накодил следующее:
Активность
[syntax=java]package ru.myscanner.scannerth;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.widget.ListView;
public class MainActivity extends FragmentActivity implements LoaderCallbacks<Cursor> {
ScannerListCursorAdapter adapter;
final static Uri CATALOG_URI = Uri.parse("content://ru.htsprovider.htspdata/catalogtable");
static final String CATALOG_NAME = "catalogname";
static final String NAME_STATUS = "nstatus";
ListView lvData;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startService(new Intent(this, CatalogService.class));
adapter = new ScannerListCursorAdapter(this, R.layout.item, null, null, null);
lvData = (ListView) findViewById(R.id.lvData);
lvData.setAdapter(adapter);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
return(new CursorLoader(this, CATALOG_URI, null, null, null, null));
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}
[/syntax]
Адаптер
[syntax=java]package ru.myscanner.scannerth;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.Filterable;
import android.widget.TextView;
public class ScannerListCursorAdapter extends SimpleCursorAdapter implements Filterable {
static final String CATALOG_NAME = "catalogname";
static final String NAME_STATUS = "nstatus";
private int layout;
public ScannerListCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.layout = layout;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
int nameCol = c.getColumnIndex(CATALOG_NAME);
String name = c.getString(nameCol);
int statCol = c.getColumnIndex(NAME_STATUS);
String nameStatCol = c.getString(statCol);
TextView name_text = (TextView) v.findViewById(R.id.tvText);
TextView stat_name_col = (TextView) v.findViewById(R.id.tvTextCol);
if (name_text != null) {
name_text.setText(name);
}
if(stat_name_col != null){
stat_name_col.setText("no");
}
return v;
}
@Override
public void bindView(View v, Context context, Cursor c) {
int nameCol = c.getColumnIndex(CATALOG_NAME);
String name = c.getString(nameCol);
int statCol = c.getColumnIndex(NAME_STATUS);
String nameStatCol = c.getString(statCol);
TextView name_text = (TextView) v.findViewById(R.id.tvText);
TextView stat_name_col = (TextView) v.findViewById(R.id.tvTextCol);
if (name_text != null) {
name_text.setText(name);
}
if(stat_name_col != null){
stat_name_col.setText("no");
}
}
}
[/syntax]
адаптер пока для пробы))
Выкидывает портянку:
- 03-26 13:43:48.554: E/AndroidRuntime(15764): FATAL EXCEPTION: main
03-26 13:43:48.554: E/AndroidRuntime(15764): java.lang.NullPointerException
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.widget.SimpleCursorAdapter.swapCursor(SimpleCursorAdapter.java:328)
03-26 13:43:48.554: E/AndroidRuntime(15764): at ru.myscanner.scannerth.MainActivity.onLoadFinished(MainActivity.java:46)
03-26 13:43:48.554: E/AndroidRuntime(15764): at ru.myscanner.scannerth.MainActivity.onLoadFinished(MainActivity.java:1)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:427)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManager.java:395)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.Loader.deliverResult(Loader.java:104)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:73)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:35)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:223)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:61)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.ModernAsyncTask.finish(ModernAsyncTask.java:461)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.ModernAsyncTask.access$500(ModernAsyncTask.java:47)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.support.v4.content.ModernAsyncTask$InternalHandler.handleMessage(ModernAsyncTask.java:474)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.os.Handler.dispatchMessage(Handler.java:99)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.os.Looper.loop(Looper.java:137)
03-26 13:43:48.554: E/AndroidRuntime(15764): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-26 13:43:48.554: E/AndroidRuntime(15764): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 13:43:48.554: E/AndroidRuntime(15764): at java.lang.reflect.Method.invoke(Method.java:511)
03-26 13:43:48.554: E/AndroidRuntime(15764): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-26 13:43:48.554: E/AndroidRuntime(15764): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-26 13:43:48.554: E/AndroidRuntime(15764): at dalvik.system.NativeStart.main(Native Method)
Вижу что приходит null, но не могу понять откуда
