1

我可以設法制作一個帶有相同圖標的listfragment。但似乎我不能用不同的圖標製作該列表。所以列表結果將是不同項目列表的不同圖標。我試着用它。當我試圖建立它。它顯示沒有錯誤。但是當我運行它。其正義的力量關閉。這裏是我的logcat。ListFragment帶圖標

04-03 16:49:13.513:W/dalvikvm(9236):線程ID = 1:螺紋與未捕獲的異常退出(組= 0x40a71930)
04-03 16:49:13.602:E/AndroidRuntime (9236):致命例外:main
04-03 16:49:13.602:E/AndroidRuntime(9236):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.surat.pendek/com.surat.pendek。 utama}:java.lang.RuntimeException:你的內容必須有一個ListView的id屬性是'android.R.id.list'
04-03 16:49:13.602:E/AndroidRuntime(9236):at android.app .ActivityThread $ H.handleMessage(ActivityThread.java:1234)
04-03 16:49:13.602:E/Android運行時(9236):在android.os.Handler.dispatchMessage(Handler.java:99)
04-03 16:49:13.602:E/AndroidRuntime(9236):at android.os.Looper.loop(Looper.java :137)
04-03 16:49:13.602:E/AndroidRuntime(9236):at android.app.ActivityThread.main(ActivityThread.java:5041)
04-03 16:49:13.602:E/AndroidRuntime (9236):了java.lang.RuntimeException:通過導致您的內容必須有一個ListView其id屬性爲「android.R.id.list」

這裏是一個擴展listfragment我的樣本片段,該片段也包含適配器:

public class SampleListFragment extends ListFragment { 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.list, null); 
} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    SampleAdapter adapter = new SampleAdapter(getActivity(), null); 
    for (int i = 0; i < 20; i++) { 
     adapter.add(new SampleItem("Sample List", android.R.drawable.ic_menu_search)); 
    } 
    setListAdapter(adapter); 
} 

private class SampleItem { 
    public String tag; 
    public int iconRes; 
    public SampleItem(String tag, int iconRes) { 
     this.tag = tag; 
     this.iconRes = iconRes; 
    } 
} 

public class SampleAdapter extends ArrayAdapter<SampleItem> { 

    private final Context context; 
     private final String[] values; 


    public SampleAdapter(Context context, String[] values) { 
     super(context, R.layout.row); 
     this.context = context; 
     this.values = values; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null); 
     } 
     ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon); 
     icon.setImageResource(getItem(position).iconRes); 
     TextView title = (TextView) convertView.findViewById(R.id.row_title); 
     title.setText(getItem(position).tag); 

     String surat = title.getText().toString(); 
      if (surat.equalsIgnoreCase("Huruf Hijaiyah")) { 
       icon.setImageResource(R.drawable.aien); 
      } else 
       if (surat.equalsIgnoreCase("About")) { 
       icon.setImageResource(R.drawable.alief); 
      } else 
       if (surat.equalsIgnoreCase("Surat+arti")) { 
         icon.setImageResource(R.drawable.ba); 
        } else 
         if (surat.equalsIgnoreCase("Surat+latin")) { 
           icon.setImageResource(R.drawable.emo_im_angel); 
          } else 
           { 
             icon.setImageResource(R.drawable.emo_im_happy); 
            } 



     return convertView; 
    } 

} 

}

,這裏是我的片段擴展listfragment:

public class MenuFragment extends ListFragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.list, null); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    String[] surat = getResources().getStringArray(R.array.surat_pendek); 
    ArrayAdapter<String> sampleAdapter = new ArrayAdapter<String>(getActivity(), 
      R.layout.row, R.id.row_title, surat); 
    setListAdapter(sampleAdapter); 
} 
+0

您爲「ListView」定義了什麼ID? – GrIsHu

回答

1

有點晚了,但我希望this answer幫助。由於logcat說:Your content must have a ListView whose id attribute is 'android.R.id.list'

看來你有一個明確的xml佈局文件:R.layout.list。此佈局應定義一個ID爲android.R.id.list的列表。