2014-10-15 4 views
0

을 사용하여 버튼을 누르면 목록보기를 만드는 방법 탐색 서랍이 있습니다. 서랍에서 항목을 클릭하면 텍스트보기가 표시됩니다. 나는 조각을 사용하여 이것을한다. 이 지점까지 잘 작동합니다. 이제 탐색 서랍에서 두 번째 항목을 클릭하면 목록을 표시하려고합니다. 하지만 그것은 응용 프로그램을 계속 충돌합니다. 목록은 사용자 정의 어댑터로 사용자 정의되며 목록 조각을 사용하여 작성됩니다. MainActivity.java에내 응용 프로그램에서 단편

private class DrawerItemClickListener implements ListView.OnItemClickListener 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     selectItem(position); 

selectItem 방법

private void selectItem(int position) 
{ 
    int pos = position; 
    Fragment fragment = null; 
    switch (pos) { 
    case 0: 
     fragment = new FragmentSell(); 
     break; 

    case 1: 
     fragment = new FragmentBuy(); 
     break; 
    } 
    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

어댑터

public class FragmentBuyAdapter extends ArrayAdapter<ItemBuy> { 

private ArrayList<ItemBuy> objects; 
public ArrayAdapter<Integer> adapter_weight; 
public String weight; 
public Context context; 

public FragmentBuyAdapter(Context context, int textViewResourceId, 
     ArrayList<ItemBuy> objects) { 
    super(context, textViewResourceId, objects); 
    this.objects = objects; 
    this.context = context; 
} 

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

    View v = convertView; 

    if (v == null) { 
     LayoutInflater inflater = (LayoutInflater) getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.fragment_buy_list_item, null); 
    } 

    ItemBuy i = objects.get(position); 

    if (i != null) { 

     TextView name = (TextView) v.findViewById(R.id.tv_shop_name); 
     TextView desc = (TextView) v.findViewById(R.id.tv_shop_description); 

      if (name != null) { 
       name.setText(i.getName()); 
      } 
      if (desc != null) { 
       desc.setText(i.getDesc()); 
      } 
     } 

     return v; 
    } 
} 

로그 cat-

10-15 11:37:05.860: W/dalvikvm(973): threadid=1: thread exiting with uncaught exception group=0xb4aebb90) 
10-15 11:37:05.890: E/AndroidRuntime(973): FATAL EXCEPTION: main 
10-15 11:37:05.890: E/AndroidRuntime(973): Process: com.coach.zudash, PID: 973 
10-15 11:37:05.890: E/AndroidRuntime(973): java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ListFragment.ensureList(ListFragment.java:402) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ListFragment.onViewCreated(ListFragment.java:203) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.BackStackRecord.run(BackStackRecord.java:684) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Handler.handleCallback(Handler.java:733) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Handler.dispatchMessage(Handler.java:95) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Looper.loop(Looper.java:137) 
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ActivityThread.main(ActivityThread.java:4998) 
10-15 11:37:05.890: E/AndroidRuntime(973): at java.lang.reflect.Method.invokeNative(Native Method) 
10-15 11:37:05.890: E/AndroidRuntime(973): at java.lang.reflect.Method.invoke(Method.java:515) 
10-15 11:37:05.890: E/AndroidRuntime(973): at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
10-15 11:37:05.890: E/AndroidRuntime(973): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
10-15 11:37:05.890: E/AndroidRuntime(973): at dalvik.system.NativeStart.main(Native Method) 
+1

오류 로그를 제공해주십시오. –

+0

logcat을 추가했습니다 – shikhin92

+0

'FragmentBuy' 코드와 레이아웃을 게시 할 수 있습니까? –

답변

0

귀하의 뷰 홀더 패턴 구현이 바람직하지 않습니다.

이 링크를 사용해보십시오. http://www.codeofaninja.com/2013/09/android-viewholder-pattern-example.html

뷰 홀더 패턴을 적용하면 문제가 해결되고 목록 스크롤이 더 원활 해집니다. getView 메소드에는 각 행에 대한 textView 참조가 있으므로 래그가 있습니다. 이것들은 모두보기에 의해 극복 될 수 있습니다 홀더 패턴

0

ohh got it ... 내 레이아웃 (XML 파일)의 listview에 기본 ID를 사용하지 않았습니다. android : id = "@ + id/android : list ",

누구나 시간 내 주셔서 감사합니다 ...