0

Я новичок в разработке android и должен принять значение id в базе данных кликов. Уже искали несколько сообщений, но не нашли ответа.Как получить элемент ID в базе данных?

Ниже мой код ListView:

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

 
     final BancoController bc = new BancoController(this); 
 
     final ArrayList<JogadorEntidade> jogadorEntidade = bc.arrayJogador(this); 
 

 
     listView = (ListView) findViewById(R.id.lvSelecionar); 
 

 
     final SelecionaAdapter adapter = new SelecionaAdapter(this, R.layout.adapter_seleciona, jogadorEntidade); 
 

 
     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
 
     fab.setBackgroundTintList(ColorStateList.valueOf(background)); 
 
     fab.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       alertInserirJogador(SelecionaJogadorAct.this); 
 
      } 
 
     }); 
 

 

 
     listView.setAdapter(adapter); 
 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
 
      @Override 
 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
 

 
       //I NEED THIS CODE 
 
       
 
       Context context = getApplicationContext(); 
 
       CharSequence text = "ID: " + ", Posicao: " + position; 
 
       int duration = Toast.LENGTH_SHORT; 
 
       Toast.makeText(context, text, duration).show(); 
 

 
       //bc.deletaRegistro(id_player); 
 

 
       Intent intent = getIntent(); 
 
       SelecionaJogadorAct.this.finish(); 
 
       startActivity(intent); 
 
      } 
 
     }); 
 
    }

Мой адаптер:

public class SelecionaAdapter extends ArrayAdapter<JogadorEntidade> { 
 

 
    Context context; 
 
    int layoutID; 
 
    ArrayList<JogadorEntidade> alJogador; 
 

 
    public SelecionaAdapter(Context context, int layoutID, ArrayList<JogadorEntidade> alJogador){ 
 
     super(context, layoutID, alJogador); 
 
     this.context = context; 
 
     this.alJogador = alJogador; 
 
     this.layoutID = layoutID; 
 
    } 
 

 
    @Override 
 
    public View getView(int position, View convertView, ViewGroup parent){ 
 
     View row = convertView; 
 
     PlayerHolder holder = null; 
 

 
     if (row == null){ 
 
      LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
 
      row = inflater.inflate(layoutID, parent, false); 
 

 
      holder = new PlayerHolder(); 
 
      holder.txtNome = (TextView)row.findViewById(R.id.txtNomeSelecionar); 
 
      holder.txtVitorias = (TextView)row.findViewById(R.id.txtVitóriasSelecionar); 
 
      holder.txtDerrotas = (TextView)row.findViewById(R.id.txtDerrotasSelecionar); 
 

 
      row.setTag(holder); 
 
     }else { 
 
      holder = (PlayerHolder)row.getTag(); 
 
     } 
 

 
     JogadorEntidade jogadorEntidade = alJogador.get(position); 
 
     holder.txtNome.setText(jogadorEntidade.getNome()); 
 
     holder.txtVitorias.setText("V: " + jogadorEntidade.vitórias); 
 
     holder.txtDerrotas.setText("D: " + jogadorEntidade.derrotas); 
 
     return row; 
 
    } 
 

 
    static class PlayerHolder{ 
 
     TextView txtNome; 
 
     TextView txtVitorias; 
 
     TextView txtDerrotas; 
 
    }

JogadorEntidade:

public class JogadorEntidade { 
 

 
    public String nome; 
 
    public Integer id_jogador; 
 
    public String vitórias; 
 
    public String derrotas; 
 

 
    public Integer getId_jogador() { 
 
     return id_jogador; 
 
    } 
 

 
    public void setId_player(int id_player) { 
 
     this.id_jogador = id_player; 
 
    } 
 

 
    public String getNome() { 
 
     return nome; 
 
    } 
 

 
    public void setNome(String nome) { 
 
     this.nome = nome; 
 
    } 
 

 
    public String getVitórias() { 
 
     return vitórias; 
 
    } 
 

 
    public void setVitórias(String vitórias) { 
 
     this.vitórias = vitórias; 
 
    } 
 

 
    public String getDerrotas() { 
 
     return derrotas; 
 
    } 
 

 
    public void setDerrotas(String derrotas) { 
 
     this.derrotas = derrotas; 
 
    } 
 

 
    public JogadorEntidade(String nome, String vitórias, String derrotas){ 
 
     super(); 
 
     this.nome = nome; 
 
     this.vitórias = vitórias; 
 
     this.derrotas = derrotas; 
 
    } 
 

 
    public JogadorEntidade(){}

public void insereJogador(JogadorEntidade jogadorEntidade) { 
 

 
     db = banco.getWritableDatabase(); 
 
     ContentValues values = new ContentValues(); 
 
     values.put(banco.NOME_JOGADOR, jogadorEntidade.getNome()); 
 
     values.put(banco.VITORIAS, jogadorEntidade.getVitórias()); 
 
     values.put(banco.DERROTAS, jogadorEntidade.getDerrotas()); 
 

 
     db.insert(CriaBanco.TABELA_JOGADOR, null, values); 
 
     db.close(); 
 
    } 
 
    
 

 
    public Cursor carregaJogador() { 
 
     Cursor cursor; 
 
     String[] campos = {banco.NOME_JOGADOR, banco.VITORIAS, banco.DERROTAS}; 
 
     db = banco.getReadableDatabase(); 
 
     cursor = db.query(banco.TABELA_JOGADOR, campos, null, null, null, null, null, null); 
 

 
     if (cursor != null) { 
 
      cursor.moveToFirst(); 
 
     } 
 
     db.close(); 
 
     return cursor; 
 
    } 
 
    
 

 
    public void deletaRegistro(int id){ 
 
     String where = CriaBanco.ID_JOGADOR + "=" + id; 
 
     db = banco.getReadableDatabase(); 
 
     db.delete(CriaBanco.TABELA_JOGADOR, where, null); 
 
     db.close(); 
 
    } 
 

 
    public ArrayList<JogadorEntidade> arrayJogador(Context context) { 
 
     ArrayList<JogadorEntidade> al = new ArrayList<JogadorEntidade>(); 
 
     BancoController bancoController = new BancoController(context); 
 
     Cursor cursor; 
 
     cursor = bancoController.carregaJogador(); 
 

 
     if (cursor != null) { 
 
      if (cursor.moveToFirst()) { 
 
       String nome = cursor.getString(cursor.getColumnIndex(banco.NOME_JOGADOR)); 
 
       String vitorias = cursor.getString(cursor.getColumnIndex(banco.VITORIAS)); 
 
       String derrotas = cursor.getString(cursor.getColumnIndex(banco.DERROTAS)); 
 

 
       JogadorEntidade jogadorEntidade = new JogadorEntidade(nome, vitorias, derrotas); 
 

 
       al.add(jogadorEntidade); 
 
       while (cursor.moveToNext()) { 
 
        nome = cursor.getString(cursor.getColumnIndex(banco.NOME_JOGADOR)); 
 
        vitorias = cursor.getString(cursor.getColumnIndex(banco.VITORIAS)); 
 
        derrotas = cursor.getString(cursor.getColumnIndex(banco.DERROTAS)); 
 
        jogadorEntidade = new JogadorEntidade(nome, vitorias, derrotas); 
 
        al.add(jogadorEntidade); 
 
       } 
 
      } 
 
     } 
 
     return al; 
 
    }

+0

Где код для вашего контроллера базы данных? –

+0

@ cricket_007 Я обновляю свое сообщение с помощью контроллера базы данных, вы можете мне помочь? –

ответ

0

Прежде всего, необходимо запросить идентификатор при выполнении запроса (если идентификатор является один созданный в базе данных столбец MAME является _id или вы можете использовать tablename._id или все, что вам нужно):

String[] campos = {"_id", banco.NOME_JOGADOR, banco.VITORIAS, banco.DERROTAS}; 

Затем вам нужно добавить идентификатор к объекту, когда вы читаете курсор:

public ArrayList<JogadorEntidade> arrayJogador(Context context) { 
    ArrayList<JogadorEntidade> al = new ArrayList<JogadorEntidade>(); 
    BancoController bancoController = new BancoController(context); 
    Cursor cursor; 
    cursor = bancoController.carregaJogador(); 

    if (cursor != null) { 
     if (cursor.moveToFirst()) { 
      String nome = cursor.getString(cursor.getColumnIndex(banco.NOME_JOGADOR)); 
      String vitorias = cursor.getString(cursor.getColumnIndex(banco.VITORIAS)); 
      String derrotas = cursor.getString(cursor.getColumnIndex(banco.DERROTAS)); 
      long id = cursor.getLong(cursor.getColumnIndex("_id",0)); 

      JogadorEntidade jogadorEntidade = new JogadorEntidade(id, nome, vitorias, derrotas); 

      al.add(jogadorEntidade); 
      while (cursor.moveToNext()) { 
       nome = cursor.getString(cursor.getColumnIndex(banco.NOME_JOGADOR)); 
       vitorias = cursor.getString(cursor.getColumnIndex(banco.VITORIAS)); 
       derrotas = cursor.getString(cursor.getColumnIndex(banco.DERROTAS)); 
      long id = cursor.getLong(cursor.getColumnIndex("_id",0)); 
       jogadorEntidade = new JogadorEntidade(id, nome, vitorias, derrotas); 
       al.add(jogadorEntidade); 
      } 
     } 
    } 
    return al; 
} 

Во всяком случае, это не путь в андроиде. Вы должны прочитать весь список, а затем показать его. Вы должны использовать шаблон зрителя и загружать игрока только тогда, когда вы его покажете. Кроме того, вместо использования списка вы должны перейти на recyclerviews. В настоящее время списки просмотров могут считаться устаревшими. См. Учебное пособие: http://developer.android.com/training/material/lists-cards.html