当键盘弹出时,显示/隐藏listview内的Edittext变得不可见

时间:2014-08-06 11:44:29

标签: android listview keyboard popup android-edittext

我有一个自定义Listview,其适配器扩展了BaseAdapter类。在listview的每一行中都有一个不可见的EditText。只有特定的行才能看到它已被点击并且在行的其余部分它仍然是不可见的。当我触摸edittext来获取键盘时出现问题,一旦键盘出现,listview就会重新开始,并且edittext再次变得不可见。 我正在寻找一种解决方案,只要选择该行,任何一个键盘都会专注于edittext,或者当键盘加速时,edittext不会消失。以下是我正在使用的适配器:

这是我的适配器xml文件 saved_option_adapter_content.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/lineItem"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    >
<TextView 
    android:id="@+id/textLine"
    android:layout_height="wrap_content"
    android:layout_marginLeft="70dp"
    android:layout_marginTop="15sp"
    android:layout_marginBottom="5sp"
    android:textSize="14sp"
    android:paddingTop="-5dp"
    android:layout_width="wrap_content"/>

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentRight="true">

<EditText 
    android:id="@+id/edittext_qty"
    android:visibility="invisible"
    android:gravity="center"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:singleLine="true"
    android:maxLength="4"
    android:textSize="14sp"
    android:inputType="numberPassword"
    android:focusable="true"
    android:textColor="@android:color/black"
    android:hint="cvv"/>
</LinearLayout>
</RelativeLayout>

这是我的getView方法:

public View getView(final int position, View convertView, final ViewGroup parent) 
             { 
             final ViewHolder holder;
                 if (convertView == null) 
                     {
                         convertView = mInflater.inflate(R.layout.saved_options_adapter_content, null);
                         holder = new ViewHolder();
                         holder.textLine = (TextView) convertView.findViewById(R.id.textLine);
                         holder.Edittext = (EditText) convertView.findViewById(R.id.edittext_qty);

                        editTextList.add(holder.Edittext);                  
                         convertView.setOnClickListener(new OnClickListener() 
                         {
                                 @Override
                                 public void onClick(final View v) 
                                     { 
selected_Txt="";
                                     if(view==null || view!=v){
                                     v.post(new Runnable() {
                                            @Override
                                            public void run() {
                                                view=v;
                                                  ViewHolder holder = ((ViewHolder)v.getTag()); 
                                                 holder.Edittext.setVisibility(View.VISIBLE);
                                                  holder.Edittext.requestFocus();
                                                 holder.Edittext.setCursorVisible(true);
                                                holder.Edittext.setFocusable(true); 
                                               if(selectedHolder != null ){
                                                selectedHolder.Edittext.setVisibility(View.INVISIBLE);
                                                }
                                                selectedHolder = holder; 
                                            }
                                        }); 
                                     }
                                     }
                         });

                         convertView.setTag(holder);
                     } 
                 else 
                     {
                     holder = (ViewHolder) convertView.getTag();
                    ((ViewHolder)convertView.getTag()).Edittext.setTag(title.get(position));
                     }

                  convertView.setTag(holder);
                 return convertView;
             } 

1 个答案:

答案 0 :(得分:0)

我的代码中没有看到listview。也许ArrayAdapter可以帮助您:http://developer.android.com/reference/android/widget/ArrayAdapter.html