2012-10-01 38 views
5

Tôi đã tạo một ứng dụng trong đó có hai đoạn và cả hai đoạn có listviews. Danh sách xem đầu tiên trong fragment1 đang được cuộn và các mục cũng được tô sáng. Nhưng trong đoạn thứ hai, listview không được cuộn và thậm chí cả các mục không được đánh dấu. Ai đó có thể cho tôi biết vấn đề là gì? Điều ở đây là tôi chỉ cần kiểm tra điều này với việc đặt cùng một lớp phân đoạn cho cả hai mảnh trong xml. Hoặc cả hai đều nên làm việc hoặc cả hai không nên vì một là không khác nhau. Nhưng tại sao vấn đề này lại xảy ra?listview thứ hai trong listfragment không cuộn

lớp mảnh của tôi:

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> 

Trả lời

3

Vì vậy, theo mã của bạn có vẻ như bạn đang đề cập các giống như Fragment1 class cho cả hai đoạn trong số main.xml của bạn. Tôi cho rằng lớp hoạt động của bạn chỉ chứa setContentView() trong phương thức onCreate(). Vì cả hai phân đoạn đều nằm trong một hoạt động, có khả năng chỉ một chế độ xem được đánh dấu ban đầu. Tôi vừa kiểm tra điều này, nhưng nó hoạt động tốt. Just drag the listview in the second fragment, thay vì bạn có thể đã cuộn nó. Nếu bạn muốn listview thứ hai được đánh dấu, tôi sợ rằng bạn có thể cần các tệp xml riêng biệt (nói fragment1 và fragment2) và các lớp riêng biệt cho các đoạn và lấy tiêu điểm mà bạn cần trước bằng cách thêm mã sau đây.

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

chúc may mắn.

+0

Có. Cảm ơn bạn. khi tôi cố gắng cuộn chế độ xem danh sách thứ hai, nó sẽ không bị cuộn ngay cả khi tôi đặt con trỏ lên đó và nhấp vào mục của nó. Vì vậy, tôi đã bối rối, nhưng kéo hoạt động. Đó là tốt. Được rồi, sẽ cố gắng triển khai đề xuất của bạn để nhận đề xuất khác được đánh dấu. – Korhan

Các vấn đề liên quan