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では、何も表示されません。
貴重な時間をありがとうございました。
Custom_Cart_Adapter.Javaはリストしません。 Custom_Cart_Adapter.Java内で使用するsingle_item.xmlにAndroid:focusable = "false"を追加してみてください。
これは問題なく実行されるので、おそらくあなたのアダプタ
@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
リストビューの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);
}
});
それがあなたを助けることを願っています!!