我有CustomListView
。当我点击某个项目时,它们会显示更多信息,特别是LinearLayout
,其中包含EditText
个数(取决于项目)。
当我的列表中有一个项目时,我没有问题(如果我点击EditText
,KeyBoard
会出现,我可以输入文字)。但是,当我在list
上有多个项目时,当我点击EditText
时,KeyBoard
出现,光标也会出现,但它刚刚消失,我有Error
:
W / IInputConnectionWrapper:getTextBeforeCursor处于非活动状态 InputConnection W / IInputConnectionWrapper:getTextAfterCursor on 不活动的InputConnection
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
MyObject myObject = getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item,parent, false);
holder = new ViewHolder();
holder.mName = (TextView) convertView
.findViewById(R.id.name);
convertView.setTag(holder);
final LinearLayout layoutDataToSent= (LinearLayout) convertView.findViewById(R.id.layoutDynamique);
for(int i = 0; i < Info.getNbByteWrite(myObject); i++) {
EditText edittext = new EditText(mContext);
edittext.setText("0x");
edittext.setLayoutParams(new LinearLayout.LayoutParams(100, ViewGroup.LayoutParams.WRAP_CONTENT));
layoutDataToSent.addView(edittext);
}
...
} else {
holder = (ViewHolder) convertView.getTag();
}
LinearLayout mLayoutWrite = (LinearLayout) convertView.findViewById(R.id.layout_write);
holder.mName.setText(Info.getName(myObject.getUuid().toString()));
if (viewSelected == position) {
if((myObject.getProperties() & MyObject.PROPERTY_WRITE) > 0){
mLayoutWrite.setVisibility(View.VISIBLE);
}
}
return convertView;
}
感谢您的帮助
编辑:
经过多次尝试,我认为问题来自我的布局。
如果我将Listview的高度设置为:
这是我的包含listview的布局(它是一个片段):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/my_listview"
android:layout_width="match_parent"
android:layout_height="500dp"
android:divider="@android:color/transparent"
android:dividerHeight="5dp" />
</LinearLayout>
这是list_item.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:orientation="vertical" >
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textSize="18sp"
android:textStyle="bold" />
...
</LinearLayout>
<LinearLayout
android:id="@+id/layout_write"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@+id/linearLayout1"
android:layout_marginStart="20dp"
android:orientation="horizontal"
android:visibility="visible" >
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:id="@+id/layoutDynamique"
android:layout_width="400dp"
android:layout_height="wrap_content"
android:orientation="horizontal"/>
...
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:background="#aaa" />
</RelativeLayout>
答案 0 :(得分:0)
尝试将theese行添加到您的代码中。我应该重置任何输入连接
...
EditText edittext = new EditText(mContext);
edittext.setText("0x");
edittext.setLayoutParams(new LinearLayout.LayoutParams(100, ViewGroup.LayoutParams.WRAP_CONTENT));
layoutDataToSent.addView(edittext);
//add folowing
edittext.requestFocus();
InputMethodManager inputManager = (InputMethodManager)context.getSystemService(INPUT_METHOD_SERVICE);
inputManager.restartInput(edittext);
....
答案 1 :(得分:0)
建议适用于&#34;大多数&#34;设备
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
用于EditText视图(在您调用`editText.setInputType(InputType.TYPE_NULL)之后;)。&#39;
您可能还应该设置:
editText.setTextIsSelectable(true);
同时声明您的EditText不应该是活动开始时获得焦点的第一个视图(如果是 - 只是来自另一个视图的requestFocus())。