gpt4 book ai didi

android - 如何在 ListView 内的 ImageView 中设置 OnClickListener?

转载 作者:太空狗 更新时间:2023-10-29 16:39:09 25 4
gpt4 key购买 nike

我有一个 ListView,每行都有一些项目。其中一项是可点击的 ImageView。我创建了一个单独的 Adapter 类来创建 ListView 并用所有项目填充它。

在我的 Activity 中,我设置了这个 Adapter,如下所示:

//myScenesArray is the array of items I want to fill in the Adapter
ListView listView = (ListView) findViewById(R.id.sceneslistview);
ListViewScenesAdapter customListAdapter = new ListViewScenesAdapter(this.getBaseContext(), R.layout.scenesrow, myScenesArray);
listView.setAdapter(customListAdapter);

我可以为每一行创建监听器,如下所示:

listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
//here I put what I want to do when Listener is activated
});

但是如何为行内的项目创建一个监听器?

我只在 Adapter 中访问我行中的项目...请看下面的代码,我的 Adapter 的 getView() 方法,当我填充所有元素时:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("ADAPTER DE CENAS","ENTROU NO getView()!!!");
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(layoutResourceId, parent, false);
ImageView left = (ImageView)row.findViewById(R.id.left);
left.setImageBitmap( (data.get(position)).getVisualImage() );
TextView middle = (TextView)row.findViewById(R.id.text);
middle.setText( (data.get(position)).getVisualName() );
View right = row.findViewById(R.id.right);
right.setTag(position);
return row;
}

我可以访问 Activity 中每一行的元素吗?

我想在每一行中为名为 right (R.id.right) 的 View 设置一个监听器。感谢您的帮助。

已更新

我已经将上下文作为我的 Adapter 类的变量。我将发布 Adapter 类的开头:

public class ListViewScenesAdapter extends ArrayAdapter<Scene> {

Context context;
int layoutResourceId;
ArrayList<Scene> data = new ArrayList<Scene>();

public ListViewScenesAdapter(Context context, int layoutResourceId, ArrayList<Scene> data) {
super(context, layoutResourceId, data);
Log.i("ADAPTER DE CENAS","ENTROU NO CONSTRUTOR!!!");
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

Adapter 类有上面的构造函数,上面提到的getView 方法和变量:context、layoutResourceId 和data。

但是我不知道如何在 Adapter 类中做一个 Listener。任何人都可以帮我吗?

最佳答案

在适配器的 getView 方法中将监听器设置为 ImageView。如果您需要从 Activity 中访问任何变量,只需将它们作为参数传递给适配器构造函数即可。

// This will set separate listeners to all of the right views.
right.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do whatever you want here, you can use the position variable to handle current view specifically
data.get(position); // this is the data you have in this listView item
}
);

关于android - 如何在 ListView 内的 ImageView 中设置 OnClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096040/

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