我正在尝试在IM应用程序中使用ListView作为消息历史记录,以前使用单个WebView显示历史记录,我正在考虑如何实现文本选择。
我发现至少有一个主要问题 - ListView
回收视图,所以如果用户试图从很多项目中选择文本,那么天真的方式将无法工作,并且将列表滚动远离开头的选择。但无论如何,Android不会让选择从一个EditText
“跳”到另一个private class MessagesAdapter extends ArrayAdapter<String> {
public MessagesAdapter(Context context, List<String> objects) {
super(context, 0, objects);
}
@Override
public EditText getView(int position, View convertView, ViewGroup parent) {
final EditText result = (EditText)(convertView == null ?
LayoutInflater.from(getContext()).inflate(R.layout.message_row, parent, false) :
convertView);
result.setText(getItem(position));
return result;
}
}
。那么,有没有(酷)方式来实现这样的功能? (如果它仅适用于Android 4.0+,则可以。)
我目前的例子是由以下代码组成的:
适配器:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cursorVisible="false"
android:editable="false"
android:textIsSelectable="true"/>
行布局:
EditText
我可以在一个EditText
中选择文字,但不能同时在多个{{1}}中选择。