【发布时间】:2017-02-12 12:50:53
【问题描述】:
我有一个由 TextView、EditText 和 Checkbox 组成的列表视图。列表视图中每个项目的布局如下所示。我现在的问题是我不能 编辑editText,当我触摸editText进行编辑时,光标会跳开,我无法编辑editText中的值。
为了解决这个问题,我参考了一些帖子,并在 EditText 中添加了以下两行
android:focusable="true"
android:focusableInTouchMode="true"
但并没有解决问题
请看下面发布的getView()方法。
请告诉我如何解决这个问题以编辑 EditText
项目布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:id="@+id/tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<EditText
android:id="@+id/et"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:cursorVisible="true"
android:focusable="true"
android:focusableInTouchMode="true"/>
<CheckBox
android:id="@+id/cb"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
getView
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = null;
if (convertView == null) {
LayoutInflater layoutinflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
view = layoutinflater.inflate(R.layout.model, null);
final ViewHolder holder = new ViewHolder();
holder.tv = (TextView) view.findViewById(R.id.tv);
holder.cb = (CheckBox) view.findViewById(R.id.cb);
holder.et = (EditText) view.findViewById(R.id.et);
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
ItemDesign element = (ItemDesign) holder.cb.getTag();
element.setChecked(buttonView.isChecked());
}
});
holder.cb.setTag(designList.get(position));
holder.et.setTag(designList.get(position));
holder.tv.setTag(designList.get(position));
//holder.et.setFocusable(false);
view.setTag(holder);
} else {
view = convertView;
((ViewHolder)view.getTag()).et.setTag(designList.get(position));
((ViewHolder)view.getTag()).tv.setTag(designList.get(position));
((ViewHolder)view.getTag()).cb.setTag(designList.get(position));
//((ViewHolder)view.getTag()).et.setFocusable(false);
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.tv.setText(designList.get(position).getTxt());
holder.cb.setChecked(designList.get(position).isChecked());
holder.et.setText(designList.get(position).getEtTxt());
//holder.et.setFocusable(false);
return view;
}
private class ViewHolder {
TextView tv;
CheckBox cb;
EditText et;
}
【问题讨论】:
标签: android listview android-edittext baseadapter