java Android ListView单击特定页面
所以,我有一个列表视图,它显示不同种类的食谱,你可以搜索不同的食谱。我似乎不明白的是如何为每个菜谱(一个字符串)分配一个id。我的第一种方法是按如下所述执行if/if-else,并检查单击的项目。如果它与精确的字符串匹配,那么它调用。类,该类随后将显示配方。但这是行不通的
我需要做什么才能为配方“产品”分配一个可以在onclick项中使用的ID
感谢所有的帮助
多谢各位
// List view
private ListView lv;
// Listview Adapter
ArrayAdapter<String> adapter;
// Search EditText
EditText inputSearch;
// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.side8);
// Listview Data
final String products[] = {"Pasta med kødsovs", "Lakselasagne", "Kyllingelasagne", "Alm. lasagne", "Lakseruller",
"Kyllinge/avocado salat", "Koldskål m. kammerjunker", "Omelet",
"Caesar salat", "Tortilla wraps med kylling", "Frikadeller med kartofler"};
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
if (products.equals("Pasta med kødsovs")) {
Intent intent = new Intent(Opskrifter.this, OpskriftPasta.class);
startActivity(intent);
finish();
} else if (products.equals("Lakseruller")) {
Intent intent = new Intent(Opskrifter.this, OpskriftLaks.class);
startActivity(intent);
finish();
} else if (products.equals("Omelet")) {
Intent intent = new Intent(Opskrifter.this, OpskriftOmelet.class);
startActivity(intent);
finish();
}
}
}
);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
Opskrifter.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
}
# 1 楼答案
使用适配器中的位置值创建开关盒
对于搜索功能,请实现自定义适配器
可以使用以下字段创建产品类:
# 2 楼答案
你可以通过扩展BaseAdapter来创建自定义适配器。当从列表中选择某个内容时,你可以创建字符串列表。使用适配器函数getItem返回你想要的字符串
函数getItem Accpets int position
只需使用从函数onClick获得的位置
# 3 楼答案
我想出了一个更简单的方法:
创建一个HashMap,如下所示:
然后将产品按顺序放入对应的字符串中。课堂活动:
这不是“正确”的方法,但那样做要简单得多
最后,把这个放在意图中
之后。我们上课了,开始活动