0

私は Android アプリを開発しており、タイトルとサブタイトルを使用して ListView にデータベースのデータを表示したいと考えています。SimpleCursorAdapter を拡張するアダプターを作成しましたが、動作していますが、最初の 2 つのフィールドが表示され、メソッド BindView で選択したものが表示されません。私はエラーを見つけようとしていますが、できません。おそらくそれは本当にばかげたものですが、そのエラーは自分で見つけるのが本当に難しいです:-)それがアダプターのコードです:

package com.apeirons.apeironsdatabasemanager;

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class MyListAdapter extends SimpleCursorAdapter {

    //private Context context;
    LayoutInflater inflater;

    @SuppressWarnings("deprecation")
    public MyListAdapter(Context context, int layout, Cursor c, String[] from,
            int[] to) {
        super(context, R.layout.consult, c, from, to);
        inflater = LayoutInflater.from(context);
    }


    public void bindview (View view, Context context, Cursor cursor){
        TextView titulo = (TextView)view.findViewById(R.id.Titulo);
        titulo.setText(cursor.getString(cursor.getColumnIndex("name")));

        TextView subtitulo = (TextView)view.findViewById(R.id.SubTitulo);   
        subtitulo.setText(cursor.getString(cursor.getColumnIndex("kind_place")));

        subtitulo.append(cursor.getString(cursor.getColumnIndex("score")));
    }


    @Override 
    public View newView (Context context, Cursor cursor, ViewGroup parent){

        View v = inflater.inflate(R.layout.entrys, parent, false);      
        return v;
    }
}

そして、ここでアダプターを使用します。

package com.apeirons.apeironsdatabasemanager;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

public class Consult extends Activity { 
    private ListView list;
    private SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.consult);

        list = (ListView)findViewById(R.id.list);

        this.getIntent();

        ApeironsSQLiteHelper apeironsdb = new ApeironsSQLiteHelper(this, "DBApeirons.DB", null, 1);

        db = apeironsdb.getReadableDatabase();

        String[] campos = new String[]{"_id", "name", "kind_place", "score"};

        Cursor c = db.query("Apeirons", campos, null, null, null, null, null);

        int cuenta = c.getCount();

        c.moveToFirst();

        Log.d("CONSULTA", Integer.toString(cuenta));

        Log.d("CURSOR", c.getString(c.getColumnIndex("score")));

        String[] from = new String[]{"name", "kind_place", "score"};

        int [] to = new int[] {R.id.Titulo, R.id.SubTitulo};

        //@SuppressWarnings("deprecation")
        MyListAdapter myadapter = new MyListAdapter (this, 
                R.layout.entrys, c, from, to);

        list.setAdapter(myadapter);

    }

}

本当にお世話になりました。

4

1 に答える 1

1

bindViewのメソッドをオーバーライドしているのではなく、どこにも呼び出されないSimpleCursorAdapter新しいメソッド (大文字化ではありません!) を定義しています。bindview

新しいメソッドはパブリック クラスでパブリックであるため、使用されていないことをコンパイラが警告することはありません。注釈を使用していた場合@Override、コンパイラは、メソッドを実際にオーバーライドしないことを警告したでしょう...

于 2013-08-30T10:49:21.067 に答える