2015-08-08 56 views
0

当我的活动开始时,edittext focus始终位于listview的最后一项。我需要这样的:Edittext focus in first listview item

1. Edittext focus is always on the first listview item 
2. It shows soft input keyboard automatically 

这里是我的主要代码:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     String[] items = {"Item1","Item2","Item3",..,"Item30"}; 

     //showing the list 
     final ListView listView = (ListView)findViewById(R.id.listSelected); 
     ArrayAdapter<String> adapter = new LVAdapter(this, items); 
     listView.setAdapter(adapter); 

     //how do I implement the code..? 

LVAdapter代码:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.main_item, parent, false); 

     TextView textView = (TextView)rowView.findViewById(R.id.textViewItem); 
     textView.setText(values[position]); 
     return rowView; 
    } 
} 

主要XML

<ListView 
     android:id="@+id/listSelected" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btnSelect" > 
    </ListView> 

    <Button 
     android:id="@+id/btnSelect" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select" 
     android:layout_alignParentTop="true" > 
    </Button> 

这里是我的main_item xml

<TextView 
     android:id="@+id/textViewItem" 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" /> 

    <EditText 
     android:id="@+id/editTextInput" 
     android:layout_width="60dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" > 
     <requestFocus /> 
    </EditText> 

main.xml和main_item.xml都使用RelativeLayout。提前致谢。

回答

0

在XML

<TextView 
    android:id="@+id/textViewItem" 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" /> 

<EditText 
    android:id="@+id/editTextInput" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" /> 

取下的EditText请求焦点,要求其编程当position == 0

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.main_item, parent, false); 

    TextView textView = (TextView)rowView.findViewById(R.id.textViewItem); 
    textView.setText(values[position]); 
    if(position == 0){ 
     EditText etText = (EditText) rowView.findViewById(R.id.editTextInput); 
     etText.requestFocus(); 
    } 
    return rowView; 
} 
+0

在LVAdapter.java或Main.java? – Alca

+0

@Alca是的,在'getView'方法里面。我编辑了代码 – SaNtoRiaN

+0

谢谢SaNtoRiaN ..成为我的教练。 :D – Alca