0

私はたくさんの質問を探してきましたが、彼らは私が探しているものを尋ねたり答えたりしないので、これが私がやろうとしていることです。これまでのところ、ウィッチにプロジェクトがあり、6列のデータを含むテーブルを含む、事前に入力されたデータベースを追加しました。メインxmlはリストビューを表示するだけで、Adapter、Cursor、SQLiteHelperなどを使用しています。すべて正常に動作します。カスタムitemlist.xmlをすべて表示します。これで、リストのすべてのアイテムに、各レコードの3つのもの(2番目、4番目、5番目の列のデータ)のみが表示されます(前に述べたように、すべて6つの列が含まれています)。 onclickitemlistenerを使用して、そのアイテムの3番目の列のデータをトーストに表示するには、どうすればよいですか?リストアイテムIDを表示できるので、誰かがここで私を助けてくれますか、ここにsomコードがあります:yのメインアクティビティからのコード

public class DBlistActivity extends Activity {

private mediosHelper dbmediosHelper = null;
private Cursor ourCursor = null;
FancyAdapter adapter = null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView myListView = (ListView) findViewById(R.id.mylistView);

    dbmediosHelper = new mediosHelper(this);
    try {
        dbmediosHelper.createDataBase();
} catch (IOException ioe) {
    throw new Error("Unable to create database");
}
try {
    dbmediosHelper.openDataBase();
}catch(SQLException sqle){
    throw sqle;
}
try {   
ourCursor = dbmediosHelper.getCursor();
startManagingCursor(ourCursor);
}catch(SQLException sqle){

    throw sqle;

}

adapter = new FancyAdapter(ourCursor);
myListView.setAdapter(adapter);

myListView.setOnItemClickListener(onListClick);

}

class FancyAdapter extends CursorAdapter {
        FancyAdapter(Cursor c) {
                super (DBlistActivity.this, c);
        }
                public void bindView(View row, Context ctxt, Cursor c) {
                    ViewHolder holder = (ViewHolder) row.getTag();
                    holder.populateForm(c, dbmediosHelper);
}
                public View newView(Context ctxt, Cursor c, ViewGroup parent){
                    LayoutInflater inflater = getLayoutInflater();
                    View row = inflater.inflate(R.layout.listitem, parent, false);
                    ViewHolder holder = new ViewHolder(row);
                    row.setTag(holder);
                    return(row);
                }
}

class ViewHolder{
    public TextView nombre=null;
    public TextView estado=null;
    public TextView ciudad=null;
    ViewHolder (View row){
        nombre = (TextView) row.findViewById(R.id.medioName);
        estado = (TextView) row.findViewById(R.id.medioEstado);
        ciudad = (TextView) row.findViewById(R.id.medioCiudad);
    }
    void populateForm(Cursor c, mediosHelper r){
        nombre.setText(r.getName(c));
        estado.setText(r.getEstado(c));
        ciudad.setText(r.getCiudad(c));
    }
}

private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){
        Toast.makeText(getApplicationContext(), String.valueOf(id), Toast.LENGTH_SHORT) .show();    
    }
};

そして私のmediosHelperから

public Cursor getCursor() {
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(TABLE_NAME);
    String[] asColumsToReturn = new String[] { COLUMN_ID, COLUMN_CODE, COLUMN_NAME, COLUMN_URL, COLUMN_ESTADO, COLUMN_CIUDAD};
    Cursor mCursor = queryBuilder.query(myDataBase, asColumsToReturn, null, null, null, null, null);
    return mCursor;
}
public CharSequence getId(Cursor c) {
    return (c.getString(0));
}
public CharSequence getCode(Cursor c) {
    return (c.getString(1));
}
public String getName(Cursor c){
    return(c.getString(2));
}
public String getUrl(Cursor c) {
    return (c.getString(3));
}
public String getEstado(Cursor c) {
    return (c.getString(4));
}
public String getCiudad(Cursor c) {
    return (c.getString(5));
}
4

1 に答える 1

1

アダプターを埋めるために使用したカーソルを取得する必要があります。それができたら、c.moveToPosition(position)を使用してonItemClickedCallbackで取得した位置に移動します。すべての列にアクセスできるより(cursor.getColumnIndex( "_ id"))

編集:

class MyActivity extends Activity implements OnItemClickListener{
FancyAdapter adapter = null;
...

adapter = new FancyAdapter(ourCursor);
myListView.setAdapter(adapter);

myListView.setOnItemClickListener(this);

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    // TODO Auto-generated method stub
Cursor c = adapter.getCursor();
    c.moveToPosition(position);
    int id = c.getInt(c.getColumnIndex("_id");
}
}
于 2012-04-09T21:25:09.490 に答える