我创建了一个可扩展的ListView,我在其中创建了一个自定义组布局。
在组布局上,我在右侧创建了一个EditText。每当我在EditText上放置文本并单击可扩展列表时,列表就不会展开/折叠。
当我对EditText执行focusable false时,列表会展开/折叠。
如何解决这个问题?请建议我。
答案 0 :(得分:1)
编辑文本本身就是一个专注的组件。如果我们放在列表视图内,可扩展列表,则列表单击并折叠展开属性将不起作用。 使用EditText,Button,ImageButton等时出现同样的问题,
所以你需要使用:
1.在可扩展列表中使用以下属性:
android:descendantFocusability="blocksDescendants"
或 2.在EditText中使用以下属性
android:focusable="false"
答案 1 :(得分:1)
今天,我已经在可扩展的List和N-level可扩展列表视图中解决了上述问题。 我附上了代码。 首先,我在您的活动/适配器上设置了可编辑的虚假编辑文本,而不是在EditText的xml上。
EditText.setFocusable(false);
其次,我使用了触摸监听器,因为在这里我设置了可编辑文本的焦点。所以我可以在编辑框上轻松输入文字。
EditText.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
EditText.setFocusableInTouchMode(true);
return false;
}
});
之后,我使用了KeyListener,因为我在这里根据位置/组位置获取数据并在哈希映射上设置值。因此,无论何时单击2级或N级可扩展列表视图数据都不会更改这对于可扩展列表视图非常重要。完成按键我隐藏键盘。并设置编辑文本的可聚焦错误,以便我可以自由扩展/折叠。
EditText.setOnKeyListener(new OnKeyListener() {
String editValue;
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
{
editValue=groupHolder.numberEdit.getText().toString().trim();
EditText.setFocusable(false);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
}
setEditValueHashMap.put(groupPosition, editValue);
return false;
}
});