public class AdapterList extends RecyclerView.Adapter<AdapterList.ParentViewHolder>{
private String mDataSet[];
private Context context;
public AdapterList(Context context,String data[]) {
mDataSet = data;
this.context=context;
}
@Override
public ParentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ParentViewHolder(LayoutInflater.from(context).inflate( R.layout.adap,null ));
}
@Override
public void onBindViewHolder(final ParentViewHolder holder, final int position) {
// holder.anameTxtView.setText(mDataSet.get(position).getDname());
// holder.abalanceTxtView.setText(mDataSet.get(position).getDbalance());
holder.editText.setText( mDataSet[position] );
holder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus){
String str=holder.editText.getText().toString();
holder.editText.setText( str );
mDataSet[position]=str;
}
}
});
}
@Override
public int getItemCount() {
return mDataSet.length;
}
class ParentViewHolder extends RecyclerView.ViewHolder {
private EditText editText;
public ParentViewHolder(View itemView) {
super(itemView);
editText= (EditText) itemView.findViewById(R.id.text);
}
}
}
我想看着 gif 一切都会清楚我的问题是什么
适配器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.AppCompatEditText
android:textColor="#000"
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
在这里,问题在于标记上自身的大小
EditText
,该值是指定wrap_content
的,在输入长文本时,小部件会扩展,然后在适配器重新使用时,会保留其先前的大小。您需要
EditText
match_parent
使用边距设置大小,或者onBindViewHolder()
每次wrap_content
在小部件中设置文本以匹配当前文本大小时重新分配属性,或者以某种方式解决小部件动态大小的问题。