ViewRootImpl: ViewPostImeInputStage processPointer 0 на OnItemClick из списка в android
У меня есть 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 [email protected] {com.iwant.namhhames.newiwant/com.iwant.namhhames.newiwant.Listing_items}} показать: false
Я не знаю, связано ли это с проблемой, и я понятия не имею, когда возникает проблема, может быть, после того, как я что-то испортил.
И Logcat показан только для реального устройства. С AVD ничего не отображается.
Благодарим вас за ценное время.
Ответы
Ответ 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/ПУНКТ НАБЛЮДЕНИЯ: КЛИМАТИЧЕСКОЕ ПОЛОЖЕНИЕ ДЕТАЛЯ: 2 11-16 14: 55: 34.233 1915-1915/ca.dti.grounded.app E/ITEM CLICK: КЛИМАТНОЕ ПОЛОЖЕНИЕ ДЕТАЛЯ: 0 11-16 14: 55: 35.616 1915-1915/ca.dti.grounded.app E/ПУНКТ НАБЛЮДЕНИЯ: КЛИМАТИЧЕСКОЕ ПОЛОЖЕНИЕ ДЕТАЛЯ: 1 11-16 14: 55: 36.061 1915-1915/ca.dti.grounded.app E/ПУНКТ НАБЛЮДЕНИЯ: КЛИМАТИЧЕСКОЕ ПОЛОЖЕНИЕ ДЕТАЛЯ: 2
Ответ 2
Вы не указываете Custom_Cart_Adapter.java.
Попробуйте добавить android: focusable = "false" в свой single_item.xml, который вы используете внутри Custom_Cart_Adapter.java
Это может помочь.
Ответ 3
Нельзя использовать onItemClickListener из списка, так как это может вызвать множество проблем. В этом случае я бы предложил использовать пользовательский клик-прослушиватель в представлении адаптера и передать индекс через этот прослушиватель кликов, я имею в виду, попытаюсь реализовать свой собственный onItemClickListener.
Как вы можете заметить, в recyclerView onItemClickListener не появляется, и правильный подход заключается в реализации собственного onItemClickListener.