gpt4 book ai didi

android - 使用自定义项目 View 从 ListView 中获取项目

转载 作者:太空狗 更新时间:2023-10-29 12:40:24 24 4
gpt4 key购买 nike

我在 android 中有一个 ListView ,它的适配器如下所示:mRecipes 是 Recipe[] 类型。

 Recipe[] mRecipes;


public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub

super.onActivityCreated(savedInstanceState);

// set adapter and ListView
RecipeAdapter adapter = new RecipeAdapter(getActivity(),
R.layout.listview_item_row, mRecipes);
mListView = (ListView) getView().findViewById(R.id.lvMainDishes);

mListView.setAdapter(adapter);
mListView.setOnItemClickListener(this);
}

如您所见,我为列表中的每个项目创建了一个自定义 XML View 。

我希望能够从 OnItemClick 上的配方数组中获取配方对象

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// get the clicked recipe object here

}

有什么想法吗?谢谢!

最佳答案

如果您不希望有适配器实例变量,那么您的 onItemClick 实现可能如下所示:

@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id) {
Recipe r = (Recipe) parent.getAdapter().getItem(position);
}

为了扩展 Pedro Oliveira 所说的话,另一个标准习语是这样的:

private RecipeAdapter mAdapter;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

mAdapter = new RecipeAdapter(getActivity(), R.layout.listview_item_row, mRecipes);
mListView = (ListView) getView().findViewById(R.id.lvMainDishes);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(this);
}

@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id) {
Recipe r = (Recipe) mAdapter.getItem(position);
}

如果您在 RecipeAdapter 中创建一个 getter 方法,则可以避免转换,例如:

public class RecipeAdapter extends BaseAdapter {

// Implementation

public Recipe get(int position) {
return mRecipe[position]; // or maybe mList.get(position);
}

}

然后,您的 onItemClick 归结为:

@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id) {
Recipe r = mAdapter.get(position);
}

关于android - 使用自定义项目 View 从 ListView 中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27155041/

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