41 votes

ViewRootImpl: ViewPostImeInputStage processPointer 0 sur OnItemClick de Listview dans android

J'ai un cart_layout comme ceci:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:id="@+id/cart_listview"
        android:layout_gravity="center_horizontal"
        android:background="@color/whiteBg"/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_gravity="bottom"
        android:padding="5dp"
        android:gravity="bottom"
        android:background="@color/whiteBg">
        <!-- this layout contains a button and a textview which I don't think is the problem -->
    </LinearLayout>
</LinearLayout>

Et le code java dans Cart.java :

protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cart_layout);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    dbhandler = new DatabaseHandler(this);
    product_all = dbhandler.getProduct();
    total = (TextView)findViewById(R.id.cart_total_textview);

    listview = (ListView)findViewById(R.id.cart_listview);

    cart_adapter = new Custom_Cart_Adapter(this,product_all);
    listview.setAdapter(cart_adapter);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.v("ITEM CLICK","CLICKED ITEM POSITION: "+position);
            Intent intent = new Intent(Cart.this, Item_edit_details.class);
            intent.putExtra("the_product", product_all.get(position));
            startActivity(intent);
        }
    });
}

Je veux juste faire un OnItemClick événement, mais à chaque fois que j'appuie sur l'article, même quand l' listview.setOnItemClickListener est là ou pas, Logcat montre

ViewRootImpl: ViewPostImeInputStage processPointer 0

ViewRootImpl: ViewPostImeInputStage processPointer 1

et rien ne se passe.

Je vois aussi un étrange journal comme ça, parfois il dit "vrai" un jour, il a dit "faux":

ActivityThread: updateVisibility : ActivityRecord{3308191 token=android.os.BinderProxy@c7ed098 {com.iwant.namhhgames.newiwant/com.iwant.namhhgames.newiwant.Listing_items}} affiche : false

Je ne sais pas si c'est lié au problème, et je n'ai aucune idée de quand le problème se produit, peut-être qu'après j'ai foiré quelque chose.

Et le Logcat est indiqué pour de vrai appareil. Avec AVD, il n'y a rien montré.

Je vous remercie pour votre temps précieux.

1voto

Vous ne répertoriez pas Custom_Cart_Adapter.java. Essayez d'ajouter android: focusable = "false" dans votre single_item.xml que vous utilisez dans Custom_Cart_Adapter.java Cela peut aider.

1voto

Le onItemClickListener de listview ne doit pas être utilisé car il peut entraîner de nombreux problèmes. Dans ce cas, je suggérerais l'utilisation d'un écouteur de clic personnalisé sur la vue de l'adaptateur et le passage de l'index via cet écouteur de clic. Je veux dire, essayez d'implémenter votre propre onItemClickListener.

Comme vous le remarquerez peut-être, à recyclerView, onItemClickListener n'apparaît pas et l'approche appropriée consiste à implémenter votre propre onItemClickListener.

1voto

Hicham Bagui Points 111

cette course sans problème alors peut-être votre adaptateur

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.testlist);

        ListView listview = (ListView)findViewById(R.id.listest);

        ArrayList<String> cart_adapter = new ArrayList<String>();

        cart_adapter.add("Me");
        cart_adapter.add("Him");
        cart_adapter.add("You");

        listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,cart_adapter));

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.e("ITEM CLICK","CLICKED ITEM POSITION: "+position);
            }
        });

    }
 

11-16 14: 55: 31.735 1915-1915 / ca.dti.grounded.app E / ITEM CLIC: CLIQUÉ POSITION DE L'ARTICLE: 2 11-16 14: 55: 34.233 1915-1915 / ca.dti.grounded.app E / ITEM CLICK: CLIQUÉ POSITION DE L'ARTICLE: 0 11-16 14: 55: 35.616 1915-1915 / ca.dti.grounded.app E / ITIC CLICK: CLIQUÉ POSITION DE L'ARTICLE: 1 11-16 14: 55: 36.061 1915-1915 / ca .dti.grounded.app E / ITEM CLICK: POSITION DE L'ARTICLE CLIQUÉ: 2

0voto

Hemant Parmar Points 2285

Vous avez bien fait, mais pour arrayadapter votre auditeur onItemClick() devrait ressembler à ceci.

 ListView listview = (ListView)findViewById(R.id.listest);
   listview .setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
            Log.e("ITEM CLICK","CLICKED ITEM POSITION: "+position);
      }
   });
 

J'espère que cela vous aidera !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X