Autore Topic: ListView dati da Database  (Letto 241 volte)

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
ListView dati da Database
« il: 13 Dicembre 2015, 11:21:23 CET »
0
Risolti i problemi con la grafica della ListView mi sono trovato davanti ad un'altro problema. In un'app molto simile alla precedente (non per niente le sto facendo parallelamente) sto usando un database per salvare dei dati. Ma mi trovo con un problema enorme, di punto in bianco (dopo aver leggermente modificato il codice xml della mainactivity) l'id preso dalla listview non viene più modificato in base al tocco ma prende sempre il primo elemento. Com'è possibile?

Questo è il codice della MainActivity.java
Codice (Java): [Seleziona]
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    private ListView lista;
    ArrayList ricetteList = new ArrayList();
    TextView ricetta_Id;

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

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), NewRicetta.class);
                intent.putExtra("ricetta_Id", 0);
                startActivity(intent);
            }
        });

        ricetta_Id = (TextView) findViewById(R.id.listItem);

        RicettaRepo repo = new RicettaRepo(this);

        ArrayList<HashMap<String, String>> ricList =  repo.getStudentList();

        lista = (ListView) findViewById(R.id.listaRicette);
        lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                ricetta_Id = (TextView) findViewById(R.id.listItem);
                String id_string = ricetta_Id.getText().toString().trim();
                int id_ricetta = Integer.parseInt(id_string);
                Intent objIndent = new Intent(getApplicationContext(), RicettaDetail.class);
                objIndent.putExtra("animalId", id_ricetta);
                startActivity(objIndent);
            }
        });
       ListAdapter adapter = new SimpleAdapter( MainActivity.this,ricList, R.layout.list_element, new String[] { "id","name"}, new int[] {R.id.listItem, R.id.ricetta_name_list});
       lista.setAdapter(adapter);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Mentre questo è quello di main_activity.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">

    <ListView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/listaRicette"></ListView>

    <android.support.design.widget.FloatingActionButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:src="@drawable/new_element"
       android:id="@+id/fab"
       />

</LinearLayout>

Qualcuno sa cosa possa essere successo?

Post unito: 13 Dicembre 2015, 19:35:08 CET
ok alla fine ho trovato il problema, nel evento di click avevo dimenticato di selezionare la casella di testo della view cliccata...
« Ultima modifica: 13 Dicembre 2015, 19:35:08 CET da Mate13, Reason: Merged DoublePost »