Cómo pasar el id de un registro de una vista de lista

votos
0
public class searchEvent extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener,
    SearchView.OnQueryTextListener {
private SessionManager session;
ProgressDialog pDialog;
List<DataModel> listData = new ArrayList<DataModel>();
Adapter adapter;
SwipeRefreshLayout swipe;
ListView list_view;


public static final String url_data = http://10.0.2.2/TriniRec/eventList.php?email=;
public static final String url_cari = http://10.0.2.2/TriniRec/search.php?email=;

private static final String TAG = searchEvent.class.getSimpleName();

public static final String TAG_ID = eventID;
public static final String TAG_NAMA = name;
public static final String TAG_RESULTS = results;
public static final String TAG_MESSAGE = message;
public static final String TAG_VALUE = value;

String tag_json_obj = json_obj_req;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_event);
    // session manager
    session = new SessionManager(getApplicationContext());

    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh);
    list_view = (ListView) findViewById(R.id.list_view);

    adapter = new Adapter(searchEvent.this, listData);
    list_view.setAdapter(adapter);

    swipe.setOnRefreshListener(this);

    swipe.post(new Runnable() {
                   @Override
                   public void run() {
                       swipe.setRefreshing(true);
                       callData();
                   }
               }
    );
    //Adding ListView Item click Listener.
   list_view.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent intent = new Intent(searchEvent.this,ShowSingleRecordActivity.class);

            // Sending ListView clicked value using intent.
            intent.putExtra(ListViewValue,listData.get(position).toString());

            startActivity(intent);

            //Finishing current activity after open next activity.
            finish();

        }
    });
}


private void callData() {
    listData.clear();
    adapter.notifyDataSetChanged();
    swipe.setRefreshing(true);
    String email = session.getEmail();
    // Creating volley request obj
    JsonArrayRequest jArr = new JsonArrayRequest(url_data + email, new Response.Listener<JSONArray>() {

        @Override
        public void onResponse(JSONArray response) {
            Log.e(TAG, response.toString());

            // Parsing json
            for (int i = 0; i < response.length(); i++) {
                try {

                    JSONObject obj = response.getJSONObject(i);

                    DataModel item = new DataModel();

                    item.setEventID(obj.getString(TAG_ID));
                    item.setName(obj.getString(TAG_NAMA));


                    listData.add(item);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            // notifying list adapter about data changes
            // so that it renders the list view with updated data
            adapter.notifyDataSetChanged();
            swipe.setRefreshing(false);
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.e(TAG, Error:  + error.getMessage());
            Toast.makeText(searchEvent.this, error.getMessage(), Toast.LENGTH_LONG).show();
            swipe.setRefreshing(false);
        }
    });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jArr);
}

@Override
public void onRefresh() {
    callData();
}

@Override
public boolean onQueryTextSubmit(String query) {
    cariData(query);
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
    return false;
}

Aquí estoy mostrando una lista de eventos de base de datos MySQL, yo quiero ser capaz de que el usuario haga clic en un registro de la lista y los llevan a la siguiente actividad con todos los detalles del registro, por lo que necesito para pasar el ID de registro . He intentado pasándole la posición de matriz a través de la intención, pero no consigo los resultados esperados, creo que me estoy pasando el valor incorrecto puede alguien decirme lo que tengo que pasar por aquí. Soy nuevo en Java y Android Studio tan mal por la falta de detalles.

Publicado el 07/11/2018 a las 22:37
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             // get postion from arraylist
                modelclass u = arrayList.get(position);
                Intent in = new Intent(currentacticity.this, nextactivity.class);
                in.putExtra("send", u);
                startActivity(in);
                   }
        });
Respondida el 08/11/2018 a las 11:32
fuente por usuario

votos
0

Lo que debe hacer es no:

DataModel model = (DataModel) listData.get(position);
intent.putExtra("ListViewValue", model);
startActivity(intent);

su DataModel debe implements Serializable

esto debe arreglar el problema.

Respondida el 07/11/2018 a las 23:49
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more