Добавить иконки в Listview с помощью Arraylist - PullRequest
0 голосов
/ 31 января 2020

Я успешно создал список, который содержит все параметры (текст). Однако я хотел бы добавить уникальные значки рядом с каждым из вариантов. Как я могу go сделать это, используя мой потрясающий код?

Вот что я пытаюсь достичь:

enter image description here

Вот мой код: AccountSettingsActivity. java

//All Options in Account Settings
private  void setupSettingsList(){
    ListView listView = findViewById(R.id.lvAccountSettings);

    ArrayList<String> options = new ArrayList<>();
    options.add(getString((R.string.editProfile)));
    options.add(getString(R.string.notifications));
    options.add(getString(R.string.privacy_settings));
    options.add(getString(R.string.security));
    options.add(getString(R.string.ads));
    options.add(getString(R.string.help));
    options.add(getString(R.string.about));
    options.add(getString(R.string.logout));

    ArrayAdapter adapter = new ArrayAdapter(mContext, R.layout.listview_row_adjustment, options);
    listView.setAdapter((adapter));
}

listview_row_adjust mnet. xml (Это просто меняет цвет текста и размер параметров в просмотре списка)

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listViewAdjustment"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:textSize="17sp"
    android:gravity="fill"
    android:textColor="@color/white"/>

Ответы [ 3 ]

0 голосов
/ 31 января 2020

Используйте модель данных с заголовком и значком, как показано ниже

class Data {

 public int imageId;
 public String txt;

 Data(Drawable imageId, String text) {

   this.imageId = imageId;
  this.txt = text;
}

}

Data menuItemSearch = new Data(ContextCompat.getDrawable(this, R.drawable.ic_search_orange), resources.getString(R.string.title))

, и когда она установлена ​​в изображении, используйте эту

yourImage.setImageDrawable(data.imageId)
0 голосов
/ 31 января 2020

Во-первых, вы должны добавить в свой listview_row_adjust mnet. xml.

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:layout_gravity="center_horizontal|top"/>
<TextView
    android:id="@+id/listViewAdjustment"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:textSize="17sp"
    android:gravity="fill"
    android:textColor="@color/white"/>

А для класса Code AccountSettingActivity:

private  void setupSettingsList(){
ListView listView = findViewById(R.id.lvAccountSettings);

ArrayList<String> options = new ArrayList<>();


options.add(getString((R.string.editProfile)));
options.add(getString(R.string.notifications));
options.add(getString(R.string.privacy_settings));
options.add(getString(R.string.security));
options.add(getString(R.string.ads));
options.add(getString(R.string.help));
options.add(getString(R.string.about));
options.add(getString(R.string.logout));
ArrayList<ImageView> images = new ArrayList<>();
//Please add Customized addapter 
}

для настроенного адаптера вы найдете помощь в этой ссылке https://www.youtube.com/watch?v=_YF6ocdPaBg.

Чтобы установить ImageView в коде, смотрите этот ответ Использование переменной для изменения изображения в Java.

0 голосов
/ 31 января 2020

Создать массив в папке / res:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="images">
        <item>@drawable/img1</item>
        <item>@drawable/img2</item>
        <item>@drawable/img3</item>
    </array>

</resources>

обновить настройки учетной записи:

    //All Options in Account Settings
    private  void setupSettingsList(){
        ListView listView = findViewById(R.id.lvAccountSettings);

TypedArray images = getResources().obtainTypedArray(R.array.images);

        ArrayList<String> options = new ArrayList<>();
        options.add(getString((R.string.editProfile)));
        options.add(getString(R.string.notifications));
        options.add(getString(R.string.privacy_settings));
        options.add(getString(R.string.security));
        options.add(getString(R.string.ads));
        options.add(getString(R.string.help));
        options.add(getString(R.string.about));
        options.add(getString(R.string.logout));
    // add images to adapter
        ArrayAdapter adapter = new ArrayAdapter(mContext, R.layout.listview_row_adjustment, options, images);
        listView.setAdapter((adapter));
    }

Добавить изображение Посмотреть в listview_row_adjust mnet. xml

в адаптере установите изображение:

imageView.setImageResource(images.getResourceId(i, -1));
...