-1

ローカル モバイル SQLite db からデータを取得するアプリケーションを実装し、Custome Simple Cursor アダプター クラスに送信しようとしました。BroadCast Reciever からデータを受信して​​います。DB から最新のレコードを取得するために使用されます。SimpleCursorAdapter を使用すると、次のことができます。 Sqlite DB からデータを取得して UI に更新します。しかし、DB コンテンツを CustomeSimpleCursorAdapter に渡すことができません。

次のようにコードを実装しました。

     private BroadcastReceiver myReceiver = new BroadcastReceiver() 
  {
        @Override
        public void onReceive(Context context, Intent intent) {
        msh = new MySqliteHelper(GetMsgsScreen.this);
        msh.openToWrite();
        lst = ((ListView)findViewById(R.id.listView1));
        cursor = msh.queueAll();
        getFromDB = new String[]{MySqliteHelper.USER_NAME,MySqliteHelper.USER_MESSAGE};
        toView = new int[]{R.id.usrName,R.id.msgText};
        cursor.moveToFirst(); 
          lst.setAdapter(new SimpleCursorAdapter(GetMsgsScreen.this, R.layout.test, cursor, getFromDB, toView));            
       updateList();

        }
    };

同様に、

SimpleCursorAdapter の代わりに CustomeSimpleCursorAdapter を使用する場合、 MySqliteHelper.USER_NAMEおよびMySqliteHelper.USER_MESSAGE コンテンツを一覧表示するにはどうすればよいですか? どんな体でも私を助けてください。

4

1 に答える 1

1

CursorAdapter のカスタム アダプタ サブクラスを作成する場合はbindViewnewViewメソッドをオーバーライドする必要があります。

public class CustomCursorAdapter extends CursorAdapter {
    public CustomCursorAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView username = (TextView)view.findViewById(R.id.username);
        username.setText(cursor.getString(
                cursor.getColumnIndex(MySqliteHelper.USER_NAME)));
        //  Set up other view here
        //  ...
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.listItem, parent, false);
        bindView(v, context, cursor);
        return v;
    }
}
于 2012-03-02T10:04:25.363 に答える