1

同じアイコンでリストフラグメントを作成できます。しかし、そのリストを別のアイコンで作成することはできないようです。そのため、リストの結果は、アイテム リストごとに異なるアイコンになります。私はそれを試してみます。そして私がそれを構築しようとしたとき。エラーは表示されません。しかし、私がそれを実行すると。そのジャストフォースは閉じます。これが私のlogcatです。

04-03 16:49:13.513: W/dalvikvm(9236): threadid=1: キャッチされない例外で終了するスレッド (group=0x40a71930)
04-03 16:49:13.602: E/AndroidRuntime(9236): 致命的な例外: メイン
04-03 16:49:13.602: E/AndroidRuntime(9236): java.lang.RuntimeException: アクティビティ ComponentInfo{com.surat.pendek/com.surat.pendek.utama} を開始できません: java.lang.RuntimeException: あなたのコンテンツには、id 属性が「android.R.id.list」である ListView が必要
です)
04-03 16:49:13.602: E/AndroidRuntime(9236): android.os.Handler.dispatchMessage(Handler.java:99)
04-03 16:49:13.602: E/AndroidRuntime(9236): Android で.os.Looper.loop(Looper.java:137)
04-03 16:49:13.602: E/AndroidRuntime(9236): android.app.ActivityThread.main(ActivityThread.java:5041)
04-03 16:49:13.602: E/AndroidRuntime(9236): 原因: java.lang.RuntimeException: コンテンツには、id 属性が「android.R.id.list」である ListView が必要です

リストフラグメントを拡張するサンプルフラグメントを次に示します。このフラグメントにはアダプターも含まれています。

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);
}
4

1 に答える 1

1

少し遅れましたが、この回答がお役に立てば幸いです。

logcat が言うように: Your content must have a ListView whose id attribute is 'android.R.id.list'.

明示的な xml レイアウト ファイルがあるようです: R.layout.list. このレイアウトは id のリストを定義する必要がありますandroid.R.id.list

于 2013-12-16T15:56:48.333 に答える