在列表视图 Android 应用程序中设置图像的问题

Posted

技术标签:

【中文标题】在列表视图 Android 应用程序中设置图像的问题【英文标题】:Problem to set images in list view android application 【发布时间】:2011-10-11 12:50:31 【问题描述】:

我是一个新的安卓开发者。我创建了一个测验应用程序,我需要在列表视图中连续显示问题。我所有的问题和选项都是图像。如何在列表视图中设置图像。我只想在列表视图中设置图像而不是任何文本。请帮帮我。

【问题讨论】:

【参考方案1】:

在你的主 xml 文件中创建一个列表视图,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/masterLayout"
 android:orientation="vertical" 
 android:layout_
 android:layout_>
    <ListView
     android:id="@+id/list"
     android:cacheColorHint="#00000000"
     android:layout_
     android:layout_/>
</LinearLayout>

然后创建另一个名为 child_layout 的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_
 android:layout_>
     <ImageView android:id="@+id/image"
      android:layout_
      android:layout_/>
</RelativeLayout>

然后在您的活动类中初始化您的列表视图:

ListView listView1 = (ListView)findViewById(R.id.list);

创建一个扩展 baseadapter 的类,并以您需要的方式修改所有必要的方法(创建将可绘制对象列表作为参数的构造函数,并创建一个设置为提供的列表的全局变量)。然后在您的活动课程中执行以下操作:

ArrayList<Drawable> images = new ArrayList<Drawable>();
// add to the list here
CustomListAdapter adapter = new CustomListAdapter(images);
listView1.setAdapter(adapter);

在 customlistadapter 类的 getView() 函数中执行此操作:

public View getView(int position, View convertView, ViewGroup parent)

    Drawable image = images.get(position);
    if (convertView == null)
    
        LayoutInflater infalInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.child_layout, null);
    
    ImageView imageView = (ImageView)convertView.findViewById(R.id.image);
    imageView.setBackgroundDrawable(image);

    return convertView;

ListView 项目点击监听:

listView1.setOnItemClickListener(new ListView.OnItemClickListener()

    public void onItemClick(AdapterView<?> listView, View itemView, int position, long itemId)
    
        String message = "example text: " + position;
        Toast.makeText(MyActivity.this, message, Toast.LENGTH_SHORT).show();
    
);

【讨论】:

嗨。我在哪里可以得到“上下文”变量? 像图像列表一样,您还必须将活动的上下文作为参数传递给列表适配器的构造函数。然后在列表适配器中,创建一个全局 Context 变量并将其设置为在构造函数中提供给您的变量。 我做到了。只是要求确认。 :) 嗨,现在我可以在列表视图中设置图像并且我想在单击侦听器上设置列表视图。我想设置一个 toast 以显示被点击图像的位置。如何我这样做? 在您的活动中创建 listView1.onItemClicked() 事件。调用该方法时提供给您的变量之一是 int,它是视图的位置。只需调用 Toast.makeText(MyActivity.this, message + position, Toast.LENGTH_SHORT).show()。【参考方案2】:

您需要创建一个自定义 ListAdapter。 API samples 中给出了一个示例。只需添加一个 ImageView 作为自定义适配器的布局,您就可以开始了。搜索更多示例。

【讨论】:

【参考方案3】:

获取一个主布局 xml 文件,您必须在其中提供 . 像这样的

     <List
       android:
       android:
       android:id="@+id/list"
  />

并使用

获取另一个布局 xml 文件
<ImageView
     android:
     android:/>

在适配器中膨胀这个包含 ImageView 的 xml 文件。这样您就可以在列表中获取图像

【讨论】:

【参考方案4】:

look at this tutorial... 并用图像视图替换 textview 并为其设置图像。

also have a look at this question...

希望这会有所帮助。

谢谢。

【讨论】:

以上是关于在列表视图 Android 应用程序中设置图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

在android的片段中设置列表视图适配器

如何在 Android 上的 Firebase 存储中设置持久性?

OpenCV - 如何在 Android 中设置全屏相机视图?

在 Android 中设置 ListView 的“空白”区域的颜色

无法在 Android 中的 XML 中设置膨胀视图的布局宽度、高度和重量

Android在listview中设置单项背景颜色