gpt4 book ai didi

java - Android - 如何使用适配器类中的代码在布局文件中设置图像?

转载 作者:行者123 更新时间:2023-12-01 12:07:57 26 4
gpt4 key购买 nike

我正在开发一个 Android 项目,该项目遵循此 YouTube 链接中的教程: https://www.youtube.com/watch?v=YCHNAi9kJI4。这是一个动画的listView删除。

我在 opaque_text_view.xml 文件的一部分中有一个图像设置:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image_text_vew_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/tv_background_with_divider"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_launcher" <--------------------------
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>

效果很完美,但是,我想动态更改图像,以便它可以使用类似 gmail 的图标进行调整,以反射(reflect)邮件本身的字母和颜色。我已经有了用于将图像设置为看起来像我在此处获得的 Gmail 客户端的代码:Colored boxed with letters a la Gmail

我遇到的问题是调整 opaque_text_view.xml 的代码只能在适配器中找到:

public class ListViewRemovalAnimation extends Activity {

StableArrayAdapter mAdapter;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_deletion);

mBackgroundContainer = (BackgroundContainer) findViewById(R.id.listViewBackground);

//Set the adapter here
--> mAdapter = new StableArrayAdapter(this,R.layout.opaque_text_view, list, mTouchListener);** <--
mListView.setAdapter(mAdapter);
}

StableArrayAdapter 是它自己的类,定义如下:

public class StableArrayAdapter extends ArrayAdapter<String> {
...
}

我基本上必须从该 StableArrayAdapter 中编辑图片,但由于它没有扩展到 Activity ,所以我找不到方法来做到这一点。我尝试使用此 How to programmatically set drawableLeft on Android button? 中的代码链接,但同样的问题。

换句话说,如何更改 opaque_text_view (drawableleft) 中的图像以将其更新为:

final LetterTileProvider tileProvider = new LetterTileProvider(this);
final Bitmap letterTile = tileProvider.getLetterTile("name", "key", tileSize, tileSize);
//SET BITMAP IMAGE HERE!!!

没有 Activity 的好处。有人有什么建议吗?

最佳答案

我不确定我是否理解,因为没有提供太多代码。完整的 Activity 代码、ArrayAdapter 代码和项目类的代码会有帮助。

在 onCreate Activity 中,您需要类似以下内容:

    yourListView.setAdapter(yourAdapter);
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
YourItemClass itemClicked = view.yourGetData();
yourAdapter.changeIcon(itemClicked);
}
});

在 ArrayAdapter 中,您要创建一个如下函数:

public void changeIcon(YourItemClass item) {
YourItemClass.setClicked(true);
notifyDataSetChanged();
}

还在你的ArrayAdapter中的getView(intposition,ViewconvertView,ViewGroupparent)中添加:

if (yourArray.get(position).isClicked()) {
yourTextView.setCompoundDrawables(getContext().getResources().getDrawable( R.drawable.your_clicked_icon), null, null, null);
}

在你的项目类中,你需要某种方法来存储它的类型。例如,如此处编码,您需要带有 setClicked() 和 isClicked() 方法的 isClicked boolean 值。

关于java - Android - 如何使用适配器类中的代码在布局文件中设置图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com