onClickItem ListView ArrayAdapter personnalisé Android Studio

Jordi Gámez

Bon après-midi,

J'essaie de toucher un listItem de ma listView et de détecter le toucher (et d'obtenir quel listItem a été touché) car après cela, je vais afficher une nouvelle activité avec les informations de la publication.

Mais j'ai des problèmes parce que je ne sais pas comment le faire et aussi j'ai essayé beaucoup de tutoriels et de codes différents et cela ne fonctionne jamais dans mon cas, et c'est pourquoi je vais publier mon code complet parce que je ' m plus d'options pour le moment.

C'est mon code:

public class Blog extends AppCompatActivity {

// URL
String url = "https://www.mywebsite.com/";

// Key JSON
String keyJSON = "posts";

// Construct the data source
ArrayList<Blog> array = new ArrayList<Blog>();

// Background color action bar
String actionBarBackgroundColor = "#00b7bb";

// Title action bar
String actionBarTitle = "Blog";

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

    // Action Bar
    setupActionBar(actionBarBackgroundColor, actionBarTitle);

    // Create the adapter to convert the array to views
    final BlogAdapter adapter = new BlogAdapter(this, array);

    // Load posts
    initBlog(adapter);
}

// Action Bar
public void setupActionBar(String color, String titulo) {
    // Create Action bar
    ActionBar mActionBar = getSupportActionBar();

    // Display title
    getSupportActionBar().setTitle(titulo);

    // Action bar background
    mActionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(color)));

    // Show back arrow
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}

// Get the information and display it in the ListView
private void initBlog(final BlogAdapter adapter) {

    // List View
    ListView listView = (ListView) findViewById(R.id.listv);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            Log.d("Click","Click");
        }
    });

    // Attach the adapter to a ListView
    listView.setAdapter(adapter);

    JsonObjectRequest jsObjRequest = new JsonObjectRequest (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            try{
                JSONObject jsonResponse = new JSONObject(response.toString());

                //Show result
                //Log.d("Result", jsonResponse.toString());

                JSONArray jsonMainNode = jsonResponse.optJSONArray(keyJSON);

                // Create products
                for(int i = 0; i<jsonMainNode.length();i++){
                    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                    String titulo = jsonChildNode.getString("title");
                    String fecha = jsonChildNode.getString("fecha");
                    String imagen = jsonChildNode.getString("imagen");
                    String introtext = jsonChildNode.getString("introtext");
                    String fulltext = jsonChildNode.getString("fulltext");

                    Blog newPost = new Blog(titulo, fecha, imagen, introtext, fulltext);

                    adapter.add(newPost);
                }
            }
            catch(JSONException e) {
                Toast.makeText(getApplicationContext(), "Error" + e.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Error", error.toString());
        }
    });

    // Access the RequestQueue through your singleton class.
    MySingleton.getInstance(this).addToRequestQueue(jsObjRequest);
}

// Back arrow action
public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(), MenuPrincipal.class);
    startActivityForResult(myIntent, 0);
    return true;
}
}

Vue de liste:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="0dp"
tools:context=".Blog.Blog"
>
<ListView
    android:id="@+id/listv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10px">
</ListView>

Vue d'élément de liste:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:layout_gravity="center_vertical|center_horizontal">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="right">

        <TextView
            android:id="@+id/blog_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="0dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true"
            android:gravity="left"
            android:textColor="@color/colorBlack"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            android:textStyle="bold"
            android:padding="0px" />

        <TextView
            android:id="@+id/blog_fecha"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="0dp"
            android:textColor="@color/colorBlack"
            android:layout_marginBottom="0dp"
            android:textStyle="italic" />

        <ImageView
            android:id="@+id/blog_image"
            android:gravity="center_vertical|center_horizontal"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="0dp"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="0dp"
            android:layout_width="match_parent"
            android:layout_height="350px" />

        <TextView
            android:id="@+id/blog_intro"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="0dp"
            android:textColor="@color/colorBlack"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium"
            android:lineSpacingExtra="4sp" />

        <Button
            android:text="Ver post"
            android:layout_width="wrap_content"
            android:id="@+id/button"
            android:textAppearance="@style/TextAppearance.AppCompat"
            android:background="@color/color"
            android:textColor="@color/blanco"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:paddingLeft="20px"
            android:paddingRight="20px"
            android:layout_marginTop="20px" />

    </LinearLayout>

</LinearLayout>

BlogAdapter:

public class BlogAdapter extends ArrayAdapter<Blog> {

public BlogAdapter(Context context, ArrayList<Blog> blogs) {
    super(context, 0, blogs);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    // Get the data item for this position
    Blog blog = getItem(position);

    // Check if an existing view is being reused, otherwise inflate the view
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.blog_item, parent, false);
    }


    TextView blogTitulo = (TextView) convertView.findViewById(R.id.blog_title);
    TextView blogFecha = (TextView) convertView.findViewById(R.id.blog_fecha);
    ImageView blogImagen = (ImageView) convertView.findViewById(R.id.blog_image);
    TextView blogIntrotext = (TextView) convertView.findViewById(R.id.blog_intro);

    blogTitulo.setText(blog.titulo);
    blogFecha.setText(blog.fecha);
    blogIntrotext.setText(blog.introtext);

    Picasso.with(getContext()).load(blog.imagen).into(blogImagen);

    return convertView;
}
}

Merci d'avance,

Salutations

AabidMulani

Tout d'abord, rendez votre classe parcelable ou sérialisable Vous devez ajouter le ItemClickListenerà votrelistview

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Intent intent = new Intent(Blog.this,ActivityToOpen.class);
                intent.putParcelable("BlogModeKey",array.get(position));
                startActivity(intent);
            }
        });

et lisez cet objet dans ActivityToOpen.

Notez ou envoyez chaque attribut de modèle de blog un par un à l'aide de putExtra

Et n'utilisez pas le même nom pour la classe et l'activité du modèle

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

ArrayAdapter personnalisé pour un ListView (Android)

Un ListView personnalisé avec un adaptateur personnalisé dans Android Studio

Android ListView et ArrayAdapter / Arraylist

Android Studio - Application de blocage ListView personnalisée

obtenir la valeur arrayList dans ArrayAdapter pour un listView dans le studio Android

Adaptateur ListView personnalisé Android

ArrayAdapter personnalisé

Comment ajouter onClickListner à ArrayAdapter sur Android Studio

comment utiliser un ArrayAdapter dans Android d'objets personnalisés

Android - ArrayAdapter personnalisé avec des problèmes d'index

Android onClickItem ne fonctionne pas sur RecyclerView

Android: ListView dans ArrayAdapter change pendant le défilement

Android ListView ArrayAdapter - disposition des cases à cocher / bouton radio

Android - ListView avec ArrayAdapter et TextViews masquées

Studio Android personnalisé automatique complet

Adaptateur personnalisé Android ListView onItemclick plus

ListView personnalisé dans Android ne fonctionne pas

Adaptateur Listview personnalisé avec filtre Android

Android Studio avec Java : ArrayAdapter ne fonctionne pas correctement

Filtre ListActvity pour ArrayAdapter personnalisé

nom est nul - ArrayAdapter personnalisé

Android Studio - ListView et Maps

kotlin Android studio listView in Fragment

Android Studio : ListView On Touch Event

ArrayAdapter personnalisé Android | Changer l'icône en cliquant sur ImageView

Comment gérer un ArrayAdapter personnalisé dans un projet Android MVP ?

Android - ArrayAdapter personnalisé - Les clics sur ListItems ne sont pas reconnus

Android utilisant un objet personnalisé avec ArrayAdapter et communiquant des vues arrière

Erreur d'attribut personnalisé - Android Studio 1.2

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive