o segundo listview no listfragment não rola
-
12-12-2019 - |
Pergunta
Criei um aplicativo no qual existem dois fragmentos e em ambos os fragmentos existem listviews.O primeiro listview no fragment1 está sendo rolado e os itens também estão sendo destacados.Mas no segundo fragmento, o listview não é rolado e até os itens não ficam destacados.Alguém pode me dizer qual é o problema?O problema aqui é que acabei de verificar isso colocando a mesma classe de fragmento em ambos os fragmentos em xml.Ou ambos deveriam funcionar ou ambos não deveriam, porque um não é diferente do outro.Mas por que esse problema ocorre?
Minha classe de 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();
}
}
principal.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>
fragmento1.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>
Solução
Então, de acordo com o seu código, parece que você está se referindo ao mesmo Fragment1 class
para ambos os fragmentos em seu main.xml
.Presumo que sua classe de atividade contenha apenas o setContentView() no onCreate() método.Como ambos os fragmentos estão em uma única atividade, existe a possibilidade de que apenas uma visualização seja destacada inicialmente.Acabei de verificar isso, mas está funcionando bem. Just drag the listview in the second fragment,
em vez disso, você pode estar rolando.Se você deseja que seu segundo listview seja destacado, temo que você possa precisar de arquivos xml separados (digamos fragment1 e fragment2) e classes separadas para os fragmentos e obter o foco no que você precisa primeiro adicionando o código a seguir.
listView1 = (ListView)findViewById(R.id.listView1);
listView1.requestFocus();
boa sorte.