彼らは、このサンプルコードで実行します。 ExpandableListViewはカテゴリとそのサブカテゴリの移入ますhttp://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.htmlどのようにonContextItemSelectedが解雇されたのかを特定しますか?私はExpandableListView、同じ方法を使用しています
(かつて私は、カテゴリをクリックしてください)。例: -Dairy(カテゴリ) -Milk(サブカテゴリー) -cheese(サブカテゴリー)私は牛乳やチーズに長いクリックすると
、メニューはこの機能を使用してポップアップ表示:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
ExpandableListContextMenuInfo info =(ExpandableListContextMenuInfo) menuInfo;
String selectedWord = ((TextView) info.targetView).getText().toString();
menu.setHeaderTitle(selectedWord.split(",")[1]); //set header
String itemId = selectedWord.split(",")[0];
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("action", "getProducts"));
nameValuePairs.add(new BasicNameValuePair("subcat_id", itemId));
String response = helper.makeHttpRequest(nameValuePairs);
String[] items = response.split(";");
for (int i=0; i<items.length; i++){
menu.add(0, 0, 0, items[i]);
}
}
次に、ポップアップメニューのアイテムの1つをクリックすると、リスト内のどのアイテムが選択されたのかを知りたいとします(たとえば、「ミルク」をクリックすると、メニューに「1%ミルク」があります。 "2%ミルク"など。 この関数は解雇されます。
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
String title = ((TextView) info.targetView).getText().toString();
String selected="";
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
Toast.makeText(this, title + " selected: " + selected+ " " + childPos + " clicked in group " + groupPos , Toast.LENGTH_SHORT).show();
return true;
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
Toast.makeText(this, title + " selected: " + selected + " " + childPos + " clicked in group " + groupPos , Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
しかし、リスト内のどの項目がクリックされたのかを判断する方法はありません。
アイデア? ありがとうございます!私がもっと明確にする必要があるかどうか私に教えてください。
これは私が必要としていたものです。本当にありがとう! – mila