どうぞ:
1.メソッドの呼び出しにリフレクションを使用し、メソッドをアイテムのタグとして設定します。次に、項目をクリックして View のタグからメソッドを取得します。
1.1.または、メソッドの文字列名を使用して、自分のコードを呼び出すことができます:
public static Object makeNativeApiFunctionCall(Object target, String functionName, Object... parameters) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Object responseObject;
Method method = target.getClass().getMethod(functionName, parameters.getClass());
responseObject = method.invoke(target, new Object[]{parameters});
return responseObject;
}
2.この最善の方法では、BaseAdapter を使用し、独自のタイプのアイテムを使用します (
class MyListMenuItem{
String methodName;
String title;
Integer imgResource;
}
3. また、アイテムの XML レイアウトで非表示の textView を 1 つ使用して SimpleAdapter を使用することもできます。そして、アイテムがクリックされて、メソッドのこの非表示の textView 名から (文字列として) 取得されます。もちろん、この textView メソッドの名前を設定する必要がある前に。
それは好きです:
String[] texts = { "sometext 1", "sometext 2" };
int[] images = { R.id.img1, R.id.img2};
String methods={"Method1","Method2"};
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(
texts.length);
Map<String, Object> m;
for (int i = 0; i < texts.length; i++) {
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, texts[i]);
m.put(ATTRIBUTE_NAME_METHOD, methods[i]);
m.put(ATTRIBUTE_NAME_IMAGE, images[i]);
data.add(m);
}
String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_METHOD,
ATTRIBUTE_NAME_IMAGE };
int[] to = { R.id.tvText, R.id.hiddenTextView, R.id.ivImg };
SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.item,
from, to);
lvSimple = (ListView) findViewById(R.id.lvSimple);
lvSimple.setAdapter(sAdapter);