2

조각이있는 목록보기를 만들었지 만 문제가 있습니다. 아래 이미지를 확인하십시오.안드로이드에서 조각 문제가있는 ListView

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

입니다 :

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

전체 활동 선언은 다음과 같이 보일 것인가? – 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(); 
    } 
} 

--- 수정 같은 뭔가 --- 여기

내가 다르게하고있어 것을 볼 수 있습니다 내 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 메서드의 응답으로 새로 고침하여 Activity가 다시 생성 된 후 어댑터가 새로 고쳐지고 있다는 것입니다.

+0

나는 이미 이것을 시도했습니다 ... 나는 동일한 문제에 직면하고 있습니다 ... – user2327338

+0

나는 편집했습니다. 내 대답은 내 ListFragment 코드입니다. – Neil

0

화면이 회전하는 경우에만 발생합니다.

조각을 실행하는 활동의 일부로 메인 페스트에 넣으십시오. 나는 화면에서 회전 할 때 이상한 일들이 일어나지 않도록 내 앱에서 사용했습니다. 이미지가

<activity 
    android:name=".ActivityName" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 
관련 문제