我创建了一个listview,其中包含textview和edittext。
我还做了一个带字符串arraylist作为参数的适配器。
我想用edittext编辑我的arraylist的元素,但它只适用于数字,而我想编辑文本。 当inputtype为“text”时,“onFocusChange”不起作用,我无法输入文本,但当inputtype为数字时,它可以正常工作。
以下是我的代码摘录:
适配器:
public View getView(int position, View view, ViewGroup parent) {
ViewHolder viewHolder;
if (view == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.lv_editetext_reponse, null, true);
viewHolder.textView1 = (TextView) view.findViewById(R.id.Item_name);
viewHolder.editText1 = (EditText) view.findViewById(R.id.Item_price);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.textView1.setText(reponses.get(position));
viewHolder.editText1.setId(position);
viewHolder.ref = position;
// Add listener for edit text
viewHolder.editText1
.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
int itemIndex = v.getId();
String enteredPrice = ((EditText) v).getText()
.toString();
reponses.set(itemIndex, enteredPrice);
}
}
});
return view;
}
private class ViewHolder {
TextView textView1;
EditText editText1;
int ref;
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/Item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingTop="5dp"/>
<EditText
android:id="@+id/Item_price"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentRight = "true"
android:layout_gravity="right"
android:hint="Price"
android:focusable="true"
android:focusableInTouchMode="true"
android:editable="true"
android:lines="1" />
</RelativeLayout>