2012-10-01 11 views
5

Ho creato un'app in cui ci sono due frammenti e in entrambi i frammenti ci sono listview. Il primo listview nel framment1 viene scostato e gli elementi vengono anche evidenziati. Ma nel secondo frammento, la listview non scorre e anche gli elementi non vengono evidenziati. Qualcuno può dirmi qual è il problema? La cosa qui è che ho appena controllato mettendo la stessa classe di frammenti su entrambi i frammenti in xml. O entrambi dovrebbero lavorare o entrambi non dovrebbero perché uno non è diverso dall'altro. Ma perché questo problema si verifica?la seconda lista nel listfragment non scorre

La mia classe frammento:

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> 

risposta

3

Così, secondo il codice sembra che ci si riferisce la stesso Fragment1 class in entrambi i frammenti nel vostro main.xml. Presumo che la classe di attività contenga solo il setContentView() nel metodo onCreate(). Poiché entrambi i frammenti si trovano su una singola attività, esiste la possibilità che solo una vista venga inizialmente evidenziata. Ho appena controllato, ma sta funzionando bene. Just drag the listview in the second fragment, piuttosto potrebbe averlo fatto scorrere. Se vuoi che la tua seconda listview venga evidenziata, temo che potresti aver bisogno di file xml separati (ad esempio fragment1 e fragment2) e classi separate per i frammenti e ottenere l'attenzione su cui hai mai bisogno prima aggiungendo il seguente codice.

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

buona fortuna.

+0

Sì. Grazie. quando provo a scorrere il secondo listview, non viene eseguito lo scorrimento anche se si posiziona il cursore su di esso e si fa clic sull'elemento. Quindi, mi sono confuso, ma il trascinamento funziona. Va bene. Okay, proverò ad attuare il tuo suggerimento per mettere in evidenza l'altro. – Korhan

Problemi correlati