Android控件开发之EditView

TextView、EditText、Button都可以用setText()方法设置控件中文本的值, 也都可以用getText()获取的控件的文本值。需要注意的是EditText的getText() 方法返回的是Editable对象。这个对象与string对象差不多,区别是:当我们修 改了一个string对象的值后会返回一个新的string对象。因为string对象不能修 改,所以返回新的对象。而Editable可以修改即返回的是它本身,因此在修改的 时候不必创建新的对象,节约了内存。可以用getText().toString()方法将获得 的Editable对象转换为string



 EditText效果


本程序main.xml源码

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="horizontal"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.   
  7. <TextView  
  8.     android:id="@+id/username"    
  9.     android:layout_width="wrap_content"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="@string/username"/>  
  12.      
  13. <EditText  
  14.     android:id="@+id/edit_usrName"  
  15.     android:layout_width="fill_parent"  
  16.     android:layout_height="wrap_content"  
  17.     android:hint="请输入你的账户名字.." />  
  18.         
  19. </LinearLayout>  



本程序java源码

[html]  view plain copy
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3.   
  4.   
  5. public class EditTextActivity extends Activity   
  6. {  
  7.     /** Called when the activity is first created. */  
  8.     @Override  
  9.     public void onCreate(Bundle savedInstanceState)   
  10.     {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.main);  
  13.     }  
  14. }  
  15.   
  16.   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在RecyclerView中使用EditText需要注意一些问题。由于RecyclerView会对视图进行回收和重用,因此需要注意以下几点: 1. 确保在ViewHolder中正确地绑定EditText控件。 2. 由于视图的回收和重用,可能会导致EditText内容丢失,因此需要在RecyclerView.Adapter中记录EditText的内容,并在View被重用时恢复它的状态。 3. 如果RecyclerView中有多个EditText,需要确保每个EditText的焦点独立,否则可能会出现意外的行为。可以使用OnFocusChangeListener来处理焦点事件。 下面是一个简单的示例代码: ``` public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; private Map<Integer, String> mEditTextContent = new HashMap<>(); // 记录EditText的内容 public MyAdapter(List<String> data) { mData = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.mEditText.setText(mEditTextContent.get(position)); // 恢复EditText的内容 holder.mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { // 记录EditText的内容 mEditTextContent.put(holder.getAdapterPosition(), holder.mEditText.getText().toString()); } } }); } @Override public int getItemCount() { return mData.size(); } static class ViewHolder extends RecyclerView.ViewHolder { EditText mEditText; ViewHolder(@NonNull View itemView) { super(itemView); mEditText = itemView.findViewById(R.id.edit_text); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值