【问题标题】:Changing image in a list item in a list view dynamically动态更改列表视图中列表项中的图像
【发布时间】:2013-01-15 11:28:50
【问题描述】:

在我的项目中,我有一个列表视图,其中包含每个包含图像的列表项。现在,当单击特定列表项时,会打开与该项相关的新活动,并且它有 3 个按钮。根据单击的按钮,该特定列表项中的图像会发生变化。 每个列表项都与数据库中的特定行相关联,我想知道如何识别特定按钮单击并直接在列表项中更改图像视图。

我自定义Adapter的getView()方法如下

    public class SpecialAdapter extends SimpleCursorAdapter{

    private EventDBAdapter dbHelper;

@SuppressWarnings("deprecation")
public SpecialAdapter(Context context, int layout, Cursor c, String[] from,
        int[] to, int i) {
    super(context, layout, c, from, to);
    // TODO Auto-generated constructor stub
}

private int[] colors = new int[] { 0xAAFFFFF, 0xAAc0c0c0 };

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub


      View view = super.getView(position, convertView, parent);
      int colorPos = position % colors.length;
      view.setBackgroundColor(colors[colorPos]);
      return view;
}

    }

每个列表项都从此视图膨胀

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="5dp"
 >

<View
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_toLeftOf="@+id/tvListTitle"
android:paddingLeft="10dp"
android:background="#CC3232"/>

<TextView
    android:id="@+id/tvListTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:layout_marginTop="10dp"
    android:textColor="#108070"
    android:text="Title in list"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/tvListTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="00:00 to 00:00"
    android:layout_below="@+id/tvListTitle"
    android:textColor="#138F6A"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/tvListWhere"
    android:layout_width="wrap_content"
    android:layout_below="@+id/tvListTime"
    android:layout_height="wrap_content"
    android:text="Crystal plaza , Andheri (West) . "
    android:textColor="#138F6A"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/tvListDetails"
    android:layout_width="250dp"
    android:layout_below="@+id/tvListWhere"
    android:layout_height="20dp"
    android:text="This is gonna contain brief summary about the event"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/tvListDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="14th January"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/tvListDay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvListDetails"
    android:text="Monday"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageView
    android:id="@+id/ivStatus"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/tvListWhere"
    android:src="@drawable/yes" />

 </RelativeLayout>

【问题讨论】:

  • 你是如何将数据设置为ListView,你是使用CursorAdapter还是你自己制作了适配器?什么样的数据库,它驻留在服务器上还是本地 sqlite 数据库?
  • @AdilSoomro 我已经制作了自己的适配器,数据驻留在本地 sqlite 数据库中。
  • 贴一些ListView和Adapter的getView()的代码,你的数据模型怎么样?
  • @AdilSoomro 上面xml中图像视图的src将在按钮单击时更改。

标签: android android-listview android-adapter


【解决方案1】:

你可以使用 startactivityforresult()

或

在您当前的活动中使用三个静态变量并根据您打开的新活动中按下的按钮设置它们,当涉及到上一个活动时检查变量并相应地设置图像。

【讨论】:

  • 如果我使用您的第二个选项,我如何找到在下一个活动(非列表视图活动)中单击了哪个列表项的按钮并仅更改该特定列表项?
  • 我建议您使用第一个,但如果您再次使用第二个,则需要使用一个额外的变量,在单击任何列表项及其位置时应更新该变量..
  • 没有我的问题没有解决,startActivityforresult() 在这里如何帮助,它没有必要我想在按钮单击时切换到我的列表活动
【解决方案2】:

已解决,我正在使用 SD 卡上图像的 url 并将其存储在 sqlite db 中并使用数据库行的内容填充列表视图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多