0

我有一个ListView用于在我的应用程序中显示文件/文件夹层次结构的工具。我正在使用带有 anImageView和 a的自定义布局TextView。我想ImageView根据TextView文本更改图像是以太文件夹或文件。我可以在不使用自定义的情况下执行此操作,ArrayAdapter或者如果我必须使用自定义ArrayAdapter如何ImageView在运行时更改图标。?

4

5 回答 5

1

每当列表中的每个条目需要多个变量项时,您都必须使用自定义适配器(即,在您的情况下,您有两个,theImageView和 the TextView)。在运行时更改数据最容易通过调用ArrayAdapter.notifyDataSetChanged().

于 2013-09-11T07:09:48.773 回答
0

getView()在您的自定义适配器类中使用此方法。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View newRowView = convertView;
    ViewHolder viewHolder;


    if(newRowView == null)
    {
    LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    newRowView = inflator.inflate(R.layout.my_list, parent,false); 
    viewHolder = new ViewHolder();

    viewHolder.name = (TextView) newRowView.findViewById(R.id.textInList);

    viewHolder.image = (ImageView) newRowView.findViewById(R.id.iconInList);

    newRowView.setTag(viewHolder);

    }
    else
    {
        viewHolder = (ViewHolder) newRowView.getTag();

    }


    viewHolder.image.setImageDrawable(textImages[position]);

    viewHolder.name.setText(names[position]);

    return newRowView; 
}



static class ViewHolder
{
    TextView name;
    ImageView image;

}

这里textImages&names是我从活动类传递给自定义适配器的数组。

这是内存效率最高、速度最快的方法。

于 2013-09-11T07:19:16.233 回答
0

您可以在自定义适配器的 getView 功能中检查并根据 textview 设置 imageview。有关自定义阵列适配器,请参见此示例

于 2013-09-11T07:11:01.067 回答
0

您可以使用ImageView.setImageResource(int)方法。

于 2013-09-11T07:11:31.703 回答
-1

试试这个例子,它可能会解决你的问题。

http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-arrayadapter/

于 2013-09-11T07:10:07.213 回答