mar*_*lar 11 android expandablelistview
我有一个由ExpandableListView填充的AlertDialog.列表本身运行良好,但由于某些原因,点击被忽略.显然我的点击处理程序永远不会被调用.
这是代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select something");
ExpandableListView myList = new ExpandableListView(this);
MyExpandableListAdapter myAdapter = new MyExpandableListAdapter();
myList.setAdapter(myAdapter);
myList.setOnItemClickListener(new ExpandableListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
try {
Toast.makeText(ExpandableList1.this, "You clicked me", Toast.LENGTH_LONG).show();
}
catch(Exception e) {
System.out.println("something wrong here ");
}
}
});
builder.setView(myList);
dialog = builder.create();
dialog.show();
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用普通列表视图填充AlertDialog,则会生成单击事件而不会出现问题:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Color Mode");
ListView modeList = new ListView(this);
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" };
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray);
modeList.setAdapter(modeAdapter);
modeList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
builder.setView(modeList);
AlertDialog dialog1 = builder.create();
dialog1.show();
Run Code Online (Sandbox Code Playgroud)
可能是因为我的ExpandableListView中的click事件失败而不是正常的ListView中的原因是什么?我可能遗漏了一些东西,但我不知道那可能是什么.
mar*_*lar 20
好的,解决方案非常简单.由于它是可扩展列表,因此列表本身会捕获项目单击以打开子元素.因此,永远不会调用事件处理程序.
相反,你必须实现OnChildClickListener() - 顾名思义 - 监听子点击!
| 归档时间: |
|
| 查看次数: |
6420 次 |
| 最近记录: |