2

Я создал представление списка с фрагментом, но есть некоторые проблемы. Проверьте изображение ниже.ListView с проблемой фрагмента на Android

Enter image description here

Это происходит только тогда, когда экран вращаться. Мой код ниже:

public class LListFragment extends SherlockListFragment { 

    private String[] line; 

    public static final String[] TITLES = { "Henry IV (1)", "Henry V", 
      "Henry VIII", "Richard II", "Richard III", "Merchant of Venice", 
      "Othello", "King Lear" }; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, TITLES)); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     Intent intent = new Intent(getActivity(), lineDetail.class); 
     intent.putExtra("selected_line", "" + TITLES[position]); 

     startActivity(intent); 
     super.onListItemClick(l, v, position, id); 
    } 

} 

Как исправить эту проблему?

+0

, где есть образ? – Tarun

+0

теперь вы можете увидеть изображение. – user2327338

+0

Вы пробовали обычный ListFragment, как тест? – Neil

ответ

1

Я использую ListFragment для аналогичной компоновки, и я не получаю эту проблему. Попробуйте использовать свой собственный Adapter для вашего списка. Что-то вроде этого

public class MyAdapter extends BaseAdapter { 
    @SuppressWarnings("unused") 
    private static final String TAG = MyAdapter.class.getSimpleName(); 

    private List<String> _items; 
    private LayoutInflater inflater; 

    public MyAdapter(List<String> items, Context context) { 
     _items = items; 
     inflater = LayoutInflater.from(context); 
    } 

    public int getCount() { 
     return (_items != null) ? _items.size() : 0; 
    } 

    public Object getItem(int position) { 
     return (_items != null) ? _items.get(position) : null; 
    } 

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

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.your_item_layout, null); 
     } 

     ((TextView)convertView.findViewById(R.id.itemText)).setText(_items.get(position)); 

     return convertView; 
    } 

    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 


    public synchronized void refresAdapter(List<String> items) { 
     _items.clear(); 
     _items.addAll(items); 
     notifyDataSetChanged(); 
    } 
} 

--- EDIT ---

Вот код для моего ListFragment

public class HomeListFragment extends ListFragment implements DataListener { 

    private MyAdapter _adapter; 
    private Context _ctx; 

    public HomeListFragment(){} 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     _ctx = getActivity(); 

     initialize(); 
    } 

    private void initialize() { 
     _adapter = new MyAdapter(new List<String>(), _ctx); 

     setListAdapter(_adapter); 

     final SomeServiceHandler s = new SomeServiceHandler(_ctx, HomeListFragment.this); 
     s.request(RequestType.GETSOMEDATA, ""); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     //do stuff 
    } 

    /** 
    * Listener method that is invoked by SomeServiceHandler 
    */ 
    public void onResponseRecieved(List<String> responseList) { 
     _adapter.refresAdapter(responseList); 
    } 
} 

Единственное, что я могу видеть, что я делаю по-другому чем вы, я обновляю свой адаптер после того, как действие создано снова, вызвав класс SomeServiceHandler, а затем обновляя ответ в методе onResponseRecieved.

+0

Я уже пробовал это ... Я столкнулся с той же проблемой ... – user2327338

+0

Я отредактировал мой ответ с кодом ListFragment. – Neil

0

Это происходит, только когда экран вращается.

Поместите это в свой mainfest, как часть действия, которое запускает фрагмент. Я использовал его в своих приложениях, чтобы предотвратить появление странных вещей, когда экран вращается.

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

Полная декларация активности будет выглядеть примерно так:

<activity 
    android:name=".ActivityName" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 
Смежные вопросы