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 correspondant 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 créer un événement OnItemClick, mais chaque fois que je tape sur l'élément, même lorsque le listview.setOnItemClickListener
est présent ou non, Logcat indique
ViewRootImpl: ViewPostImeInputStage processPointer 0
ViewRootImpl: ViewPostImeInputStage processPointer 1
et rien ne se passe.
Je vois aussi un journal étrange comme celui-ci, parfois il disait "vrai", parfois il disait "faux":
ActivityThread: updateVisibility: ActivityRecord {3308191 token=Android.os.BinderProxy@c7ed098 {com.iwant.namhhgames.newiwant/com.iwant.namhhgames.newiwant.Listing_items}} show: false
Je ne sais pas si cela a un lien avec le problème, et je ne sais pas du tout quand le problème survient, peut-être après que je me suis trompé.
Et le Logcat est affiché pour un périphérique réel uniquement. Avec AVD, rien n’est montré.
Merci pour votre temps précieux.
Vous ne répertoriez pas Custom_Cart_Adapter.Java . Essayez d'ajouter Android: focusable = "false" dans votre fichier single_item.xml que vous utilisez dans Custom_Cart_Adapter.JavaIl peut vous aider.
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 CLICK: POSITION DE L'ARTICLE CLIQUÉE: 2 11-16 14: 55: 34.233 1915-1915/ca.dti.grounded.app E/ITEM CLICK: POSITION DE L'ARTICLE CLIQUÉE: 0 11-16 14: 55: 35.616 1915-1915/ca.dti.grounded.app E/ITEM CLICK: POSITION DE L'ARTICLE CLIQUÉE: 1 11-16 14: 55: 36.061 1915-1915/ca.dti.grounded.app E/ITEM CLICK: CLIQUÉ POSITION ARTICLE: 2
Le onItemClickListener de listview ne doit pas être utilisé car il peut entraîner de nombreux problèmes. Pour 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 par 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.
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!