У меня есть ListView с пользовательским адаптером и элементами списка, содержащими только TextView. Элементы списка имеют метод OnItemClick, установленный в методе обратного вызова onCreate.ListView onItemClick не называется
templatesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(DEBUG_TAG, "templatesListView onClick()");
//item is selected from the cursor to get necessary data
Log.d(DEBUG_TAG, "ListView count: " + templatesListView.getCount());
Log.d(DEBUG_TAG, "messagesCursor count: " + messagesCursor.getCount());
if (position >= messagesCursor.getCount()) {
Log.d(DEBUG_TAG, "Unable to access element " + position + ", it does not exist in the messagesCursor. Cursor count: " + messagesCursor.getCount());
}
messagesCursor.moveToPosition(position);
final String selectedItemName = messagesCursor.getString(1);
AlertDialog.Builder builder = new AlertDialog.Builder(SendMessageActivity.this);
builder.setTitle(selectedItemName).setMessage("Do you want to use template: "+selectedItemName+"?");
//Use template onClick
builder.setPositiveButton("Use", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int x) {
messageEditText.setText(selectedItemName);
}
});
//Cancel onClick
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int x) {
}
});
builder.show();
}
});
элемент управления ListView в файле макета деятельности определяется как:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/templatesListView"
android:layout_alignParentRight="true"
android:clickable="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/sendButton" />
Элемент списка определяется в отдельном файле макета, как:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/name_textView" />
OnClick метод вызывается правильно, когда я запускаю приложение на Android 4.4.4, но когда я запускаю его на Android 5.1.1 он вообще не называется.
Компоновка элемент списка был также создан для v21 + отдельно, пожалуйста, найти код ниже:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Medium Text"
android:id="@+id/name_textView"
android:singleLine="true"
android:textColor="@color/foreground_material_light"
android:theme="@android:style/Widget.Material.Light.Button.Borderless" />
ли вы, ребята, знаете, что я должен изменить, чтобы заставить его работать на уровне API 21+ ? Это только файл xml (атрибуты?) Или мне нужно изменить реализацию? Ура!
Возможно, у вашего списка нет товаров в нем atm? Я просто догадываюсь, потому что не было ничего, что подтвердило бы, что ваш список был заполнен. Отвечая, пожалуйста, используйте @, а затем мое имя, чтобы я мог быть уведомлен. –
@AkashAggarwal: listView успешно заполнен пользовательским адаптером. Может быть, адаптер вызывает проблему с новыми версиями API? –
Я работаю над API 23 с последних 4-5 месяцев, и ваш код выглядит очень хорошо для меня.Не могли бы вы поделиться кодом внутри 'onItemClick()'? –