ListFragments を使用するのはこれが初めてで、エラーが発生しています。私の質問は、なぜこのコード行に赤い線が表示されるのですか?
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, model.getIncidents()));
それは言うThe constructor ArrayAdapter<String>(Activity, int, ArrayList<Incident>) is undefined
編集
このフラグメントで上記のエラーが発生しなくなりました。コードを少し変更したところ、次のようになりました。
public class Incidents_Frag extends ListFragment {
View view;
public static Model model;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.incid, container, false);
model = new Model();
setListAdapter(new ArrayAdapter<Incident>(getActivity(),
android.R.layout.simple_list_item_1, model.getIncidents()));
return view;
}
}
ただし、実行時エラーが発生します。ログキャットは以下です
04-21 18:47:40.934: E/AndroidRuntime(806): FATAL EXCEPTION: main
04-21 18:47:40.934: E/AndroidRuntime(806): java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.ListFragment.ensureList(ListFragment.java:402)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.ListFragment.onViewCreated(ListFragment.java:203)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:809)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:998)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.BackStackRecord.run(BackStackRecord.java:622)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1330)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:417)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.os.Handler.handleCallback(Handler.java:605)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.os.Handler.dispatchMessage(Handler.java:92)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.os.Looper.loop(Looper.java:137)
04-21 18:47:40.934: E/AndroidRuntime(806): at android.app.ActivityThread.main(ActivityThread.java:4340)
04-21 18:47:40.934: E/AndroidRuntime(806): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 18:47:40.934: E/AndroidRuntime(806): at java.lang.reflect.Method.invoke(Method.java:511)
04-21 18:47:40.934: E/AndroidRuntime(806): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-21 18:47:40.934: E/AndroidRuntime(806): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-21 18:47:40.934: E/AndroidRuntime(806): at dalvik.system.NativeStart.main(Native Method)
私は一生、最初の行で彼らが何について話しているのか理解できません。R.id
という名前のファイルが表示されませんlist
。私は今、リストビューまたはテキストビューをどこかに配置する必要があると信じています。あなたが提供できるどんな助けにも感謝します
編集
これが私のフラグメントの新しいコードです
public class Incidents_Frag extends ListFragment {
View view;
public static Model model;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.incid, container, false);
model = new Model();
setListAdapter(new ArrayAdapter<Incident>(getActivity(),
android.R.layout.simple_list_item_1, model.getIncidents()));
return view;
}
public class MyArrayAdapter extends ArrayAdapter<Item> {
ArrayList<Incident> items;
Context context;
public MyArrayAdapter(Context context, int textViewResourceId,
ArrayList<Incident> items) {
super(context, textViewResourceId, items);
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder = new ViewHolder();
Item item = items.get(position);
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(R.layout.list_item, parent, false);
holder.userName = (TextView) row.findViewById(R.id.name);
row.setTag(holder);
}
else
{
holder = (ViewHolder) row.getTag();
}
holder.name.setText(item.getName());
return row;
}
public static class ViewHolder
{
TextView name;
}
public int getCount() {
return items.size();
}
}
}
下に赤い線が入ります
Item item = items.get(position);
holder.userName = (TextView) row.findViewById(R.id.name);
「userName を解決できません」
holder.name.setText(item.getName());
「メソッド getName() はタイプ ClipData.Item に対して定義されていません」
public static class ViewHolder
「メンバー型 ViewHolder は静的に宣言できません。静的型は、静的または最上位の型でのみ宣言できます」
したがって、これらの赤い線をクリアできれば、うまくいくかもしれませんし、うまくいかないかもしれません. このパスを続行する場合は、このコードが適切な場所にあるかどうか、およびどのような編集が必要かについてアドバイスしてください。