ImageButton в пользовательском адаптере ListView - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть некоторые проблемы с двумя кнопками изображения в пользовательском listView.Я не мастер Android, поэтому я следовал некоторому руководству о кастомном адаптере.То, что я хочу, это список строк, и в каждой строке есть 1 текстовое представление и 2 кнопки изображения.Текстовое представление также должно быть кликабельным.Это то, что я хочу.

enter image description here

И это код XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >


<TextView
    android:id="@+id/textView2"
    android:layout_width="239dp"
    android:layout_height="61dp"
    android:gravity="center"
    android:text="TextView"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:textAppearance="@style/TextAppearance.AppCompat.Body2" />


<ImageButton
    android:id="@+id/simpleImageButton"
    android:layout_width="62dp"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="0dp"
    android:scaleType="fitCenter"

    tools:srcCompat="@drawable/download" />

<ImageButton
    android:id="@+id/simpleImageButton2"
    android:layout_width="62dp"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="68dp"
    android:layout_marginBottom="0dp"

    android:scaleType="fitCenter"
    tools:srcCompat="@drawable/audio" />

Иэто класс java адаптера:

public class LuogoListAdapter extends ArrayAdapter<Luogo> {
private static final String TAG = "LuogoListAdapter";
private Context mcontext;
int mresouce;
ImageButton posButton;
ImageButton audButton;
TextView nameLoc;

public LuogoListAdapter( Context context, int resource, ArrayList<Luogo> objects) {
    super(context, resource, objects);
    mcontext = context;
    mresouce = resource;

}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    String name = getItem(position).getNomeLuogo();
    LayoutInflater inflater = LayoutInflater.from(mcontext);
    convertView = inflater.inflate(mresouce, parent, false);
    TextView tvNome = (TextView) convertView.findViewById(R.id.textView2);
    tvNome.setText(name);
    posButton = (ImageButton) convertView.findViewById(R.id.simpleImageButton);
    posButton.setVisibility(View.VISIBLE);
    audButton = (ImageButton) convertView.findViewById(R.id.simpleImageButton2);
    audButton.setVisibility(View.VISIBLE);
    /*posButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });
    ADD FUTURE ACTION
    audButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {

        }
    });
    */
    return convertView;
}


}

Но когда я запускаю приложение, я не вижу две мои кнопки изображения:

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Пожалуйста, проверьте ответ, просто скопируйте и отправьте ответ, введите код здесь

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
    android:id="@+id/textView2"
    android:layout_width="239dp"
    android:layout_height="61dp"
    android:gravity="center"
    android:text="TextView"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:textAppearance="@style/TextAppearance.AppCompat.Body2" />
<ImageButton
    android:id="@+id/simpleImageButton"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="0dp"
    android:scaleType="fitCenter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"        
    android:src="@drawable/download" />
<ImageButton
    android:id="@+id/simpleImageButton2"
    android:layout_width="62dp"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="68dp"
    android:layout_marginBottom="0dp"
    android:scaleType="fitCenter"
    android:src="@drawable/audio" />

0 голосов
/ 24 декабря 2018

в вашем файле макета используйте app:srcCompat="@drawable/audio" вместо tools:srcCompat="@drawable/audio".Инструменты используются для визуального представления в Android Studio, но не на реальном устройстве.

Редактировать

Так что app: srcCompat работает, если вы установили в файле build.gradle приложений следующее под defaultConfig { vectorDrawables.useSupportLibrary = true }

Ниже показано, как я могу реализовать свой макет

<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
    android:id="@+id/textView2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="TextView"
    android:textAppearance="@style/TextAppearance.AppCompat.Body2"
    app:layout_constraintTop_toTopOf="@id/simpleImageButton"
    app:layout_constraintBottom_toBottomOf="@id/simpleImageButton"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toStartOf="@id/simpleImageButton" />

<ImageButton
    android:id="@+id/simpleImageButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    app:layout_constraintStart_toEndOf="@id/textView2"
    app:layout_constraintEnd_toStartOf="@id/simpleImageButton2"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:srcCompat="@drawable/ic_arrow_back_black_24dp"
    tools:ignore="ContentDescription" />

<ImageButton
    android:id="@+id/simpleImageButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    app:layout_constraintStart_toEndOf="@id/simpleImageButton"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:srcCompat="@drawable/ic_arrow_back_black_24dp"
    tools:ignore="ContentDescription" />

</androidx.constraintlayout.widget.ConstraintLayout>

Если вы хотите, чтобы кнопка изображения не имела серого фона, тогда вместо app: srcCompat используйте android: background = "@ drawable /скачать "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...