【问题标题】:Add icons to Listview using Arraylist使用 Arraylist 将图标添加到 Listview
【发布时间】:2020-05-16 18:12:39
【问题描述】:

我已经成功创建了一个包含所有选项(文本)的列表视图。但是,我想在每个选项旁边添加独特的图标。我该如何使用我的删除代码来执行此操作?

这是我想要实现的目标:

这是我的代码: 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_adjustmnet.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"/>

【问题讨论】:

标签: java android xml listview


【解决方案1】:

在 /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_adjustmnet.xml 中添加图像视图

在Adapter中设置图片:

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

【讨论】:

  • 感谢您的回复,能否请您详细说明“在适配器中设置图像”部分,我似乎无法理解您所指的内容。
  • 嗨,您将为此制作一个自定义适配器
  • 我对这个很陌生,你能告诉我怎么做吗?
  • 查看此链接
【解决方案2】:

使用带有如下标题和图标的数据模型

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)

【讨论】:

    【解决方案3】:

    首先,您必须在您的 listview_row_adjustmnet.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"/>
    

    对于代码 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 请看这个答案Using variable to change image in Java

    【讨论】:

    • ArrayAdapter 行没有任何意义.. 给了我一堆错误
    • 检查这个guides.codepath.com/android/Using-an-ArrayAdapter-with-ListView>这个链接可以帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2015-03-30
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多