web-dev-qa-db-ja.com

ViewRootImpl:androidのリストビューのOnItemClickのViewPostImeInputStage processPointer 0

cart_layout このような:

<?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>

そして、Javaのコードは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);
        }
    });
}

OnItemClickイベントを作成したいだけなのに、listview.setOnItemClickListenerがあるかどうか、Logcatが示しています

ViewRootImpl:ViewPostImeInputStage processPointer 0

ViewRootImpl:ViewPostImeInputStage processPointer 1

そして何も起こりません。

また、次のような奇妙なログが表示されます。「true」と表示されることもあれば、「false」と表示されることもあります。

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

それが問題に関連しているかどうかはわかりませんが、問題がいつ発生したかはわかりません。

また、Logcatは実際のデバイスに対してのみ表示されます。 AVDでは、何も表示されません。

貴重な時間をありがとうございました。

40
Tran Hoai Nam

Custom_Cart_Adapter.Javaはリストしません。 Custom_Cart_Adapter.Java内で使用するsingle_item.xmlにAndroid:focusable = "false"を追加してみてください。

1

これは問題なく実行されるので、おそらくあなたのアダプタ

   @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クリック:クリックされたアイテムの位置:2 11-16 14:55:34.233 1915-1915/ca.dti.grounded.app E /アイテムクリック:クリックされたアイテムの位置:0 11-16 14:55:35.616 1915-1915/ca.dti.grounded.app E/ITEMクリック:クリックされたアイテムの位置:1 11-16 14:55:36.061 1915-1915/ca .dti.grounded.app E/ITEM CLICK:クリックされたアイテムの位置:2

1
Hicham Bagui

リストビューのonItemClickListenerは、このような多くの問題を引き起こす可能性があるため、使用しないでください。この場合、アダプターのビューでカスタムクリックリスナーを使用し、このクリックリスナーにインデックスを渡すことをお勧めします。つまり、独自のonItemClickListenerを実装することを意味します。

お気づきかもしれませんが、recyclerViewではonItemClickListenerは表示されず、適切なアプローチは独自のonItemClickListenerを実装することです。

正しくしましたが、arrayadapterの場合、onItemClick()リスナーは次のようになります。

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);
      }
   });

それがあなたを助けることを願っています!!

0
Hemant Parmar