【问题标题】:Custom ListView?自定义列表视图?
【发布时间】:2011-07-25 10:14:52
【问题描述】:

我有一个 Fedor 制作的代码,可以找到“here”。

第一张图就是我现在的样子,

第二张图片是我想要完成的。

有人可以指导我吗?几天来我一直在努力解决这个问题。 请帮助我,在此先感谢!

【问题讨论】:

    标签: android listview load lazy-evaluation


    【解决方案1】:

    可以在此处找到创建自定义 ListView 的教程: http://justcallmebrian.com/?p=139

    只需要更改每个项目的 XML 布局,就可以像 Robby 所说的那样拥有 2 个 ImageView。然后在您的适配器的 getView 中(如果您跟随其他人的答案,则为 LazyAdapter),您应该有这样的内容:

    ImageView image1 = (ImageView) findViewById(R.id.image1); image1.setResource(R.drawable.icon1); ImageView image2 = (ImageView) findViewById(R.id.image2); image2.setResource(R.drawable.icon2); TextView 文本 = (TextView)findViewById(R.id.text); text.setText("我有 2 张图片");

    我之前粘贴的教程描述了一种使列表动态生成的方法(即没有 R.drawable.icon1/2 的资源并且没有文本图像的文本)。这样的事情可能会起作用(假设您有一个模型类将包含所有 3 条信息):

    int resid1 = context.getResources().getIdentifier("com.domain.sub:drawable/" + myList.get(position).getImage1Name, null, null);
    ImageView image1 = (ImageView) findViewById(R.id.image1);
    image1.setResource(resid1);
    int resid2 = context.getResources().getIdentifier("com.domain.sub:drawable/" + myList.get(position).getImage2Name, null, null);
    ImageView image2 = (ImageView) findViewById(R.id.image2);
    image2.setResource(resid2);
    TextView text = (TextView)findViewById(R.id.text);
    text.setText(myList.get(position).getText());
    

    当然,上面的 sn-p 假设您有一个名为 myList 的 ArrayList,它还可以获取图像名称和要显示的文本。

    【讨论】:

      【解决方案2】:

      您只需要修改列表项布局(在 item.xml 中)以拥有另一个 ImageView。

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          android:layout_width="fill_parent" android:layout_height="wrap_content">
          <ImageView android:id="@+id/image1" android:layout_width="50dip" 
              android:layout_height="50dip" android:src="@drawable/stub" 
              android:scaleType="centerCrop" /> 
          <ImageView android:id="@+id/image2" android:layout_width="50dip" 
              android:layout_height="50dip" android:src="@drawable/stub" 
              android:scaleType="centerCrop" /> 
          <TextView android:id="@+id/text" android:layout_width="fill_parent" 
              android:layout_height="wrap_content" android:layout_weight="1" 
              android:layout_gravity="left|center_vertical" android:textSize="20dip" 
              android:layout_marginLeft="10dip" /> 
      </LinearLayout>
      

      并修改 LazyAdapter 的 getView() 方法以添加对第二个 ImageView 的支持。

      【讨论】:

      • 我尝试使用 LazyAdapter.class,但我应该在那里进行哪些更改才能解决我的问题?
      【解决方案3】:

      这是一个类似的例子。您必须为您的 ListView 创建一个自定义适配器。

      http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

      您可能可以使用该示例的大部分内容。只需更改 row.xml 以创建您想要的布局和适配器中的 getView()。

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 2015-12-22
        • 2018-05-10
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多