2012-10-01 21 views
5

Creé una aplicación en la que hay dos fragmentos y en ambos fragmentos hay listviews. La primera vista de lista en el fragmento1 se desplaza y los elementos también se resaltan. Pero en el segundo fragmento, la vista de lista no se desplaza e incluso los elementos no se resaltan. ¿Puede alguien decirme cuál es el problema? Lo que pasa aquí es que acabo de comprobar esto poniendo la misma clase de fragmento en ambos fragmentos en xml. O ambos deberían trabajar o los dos no deberían porque uno no es diferente del otro. Pero, ¿por qué ocurre este problema?la segunda lista de la lista en el listfragment no se desplaza

Mi clase fragmento:

public class Fragment1 extends ListFragment{ 

    String[] countries = new String[] { 
     "India", 
     "Pakistan", 
     "Sri Lanka", 
     "China", 
     "Bangladesh", 
     "Nepal", 
     "Afghanistan", 
     "North Korea", 
     "South Korea", 
     "Japan" 
    }; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     return inflater.inflate(R.layout.fragment1,container,false); 
    } 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,countries); 
     setListAdapter(adapter); 
    } 

    public void onListItemClick(ListView parent, View v,int position, long id) 
    { 
     Toast.makeText(getActivity(), "You have selected "+countries[position], Toast.LENGTH_SHORT).show(); 
    } 

} 

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:name="com.example.listfragmentexample.Fragment1" 
     android:id="@+id/fragment1" 
     android:layout_weight="0.5" 
     android:layout_width="0dp" 
     android:layout_height="200dp" /> 

    <fragment 
     android:name="com.example.listfragmentexample.Fragment1" 
     android:id="@+id/fragment2" 
     android:layout_weight="0.5" 
     android:layout_width="0dp" 
     android:layout_height="300dp"/> 
</LinearLayout> 

fragment1.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <ListView 
     android:id="@id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false"/> 

</LinearLayout> 

Respuesta

3

Así, de acuerdo con su código parece que se está refiriendo el el mismo Fragment1 class a ambos fragmentos en su main.xml. Supongo que su clase de actividad solo contiene el setContentView() en el método onCreate(). Como ambos fragmentos están en una sola actividad, existe la posibilidad de que solo una vista se destaque inicialmente. Acabo de comprobar esto, pero está funcionando bien. Just drag the listview in the second fragment, en vez de eso podría haber estado desplazándolo. Si desea que se destaque su segunda lista de la lista, me temo que puede necesitar archivos xml separados (digamos fragment1 y fragment2) y separar las clases de los fragmentos y obtener el enfoque sobre cualquier cosa que necesite primero agregando el siguiente código.

listView1 = (ListView)findViewById(R.id.listView1); 
listView1.requestFocus(); 

buena suerte.

+0

Sí. Gracias. cuando trato de desplazar la segunda vista de lista, no se desplaza aunque coloque el cursor sobre ella y haga clic en su elemento. Entonces, me confundí, pero el arrastre funciona. Esta bien. Está bien, intentará implementar su sugerencia para que el otro se destaque. – Korhan

Cuestiones relacionadas