0

私はAndroidが初めてで、リストにアイテム(テキストのみ)を正常に表示できるListFragmentがあります。

//More.class

public class More extends ListFragment{

private ListView mListView;
String android_versions[] = new String[]{"1","2","3","4",};

@Override
public void onActivityCreated(Bundle savedInstanceState) { 

    ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(getActivity().getBaseContext(), android.R.layout.simple_list_item_1, android_versions);
    mListView.setAdapter(mAdapter);
    super.onActivityCreated(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.more_listview, container, false);
    mListView = (ListView)view.findViewById(android.R.id.list);
    return view;
    }
}

これは私のアダプタークラスです

//ImageAdapter.class

public class ImageAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.more_item, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.label);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        textView.setText(values[position]);

        // Change icon based on name
        String s = values[position];

        System.out.println(s);

        if (s.equals("About App")) {
            imageView.setImageResource(R.drawable.more_about);
        } else if (s.equals("Tools Tutorial")) {
            imageView.setImageResource(R.drawable.more_about);
        } else if (s.equals("EnfaMama A+ Club")) {
            imageView.setImageResource(R.drawable.more_app);
        } else if (s.equals("App Technical Contact")) {
            imageView.setImageResource(R.drawable.more_app);
         }

        return rowView;
    }
}

これが私のテキストと画像の設定です

//more_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/icon"
    android:contentDescription="@string/image"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:padding="10dp"
    android:src="@drawable/tool_settings" >
</ImageView>

<TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@+id/label"
    android:textSize="20dp"
    android:textStyle="bold" /></LinearLayout>

ここで2つのことを達成したい。

1) イメージとテキストを含むカスタム アダプターがあり、このアダプターを使用したいと考えています。More.class に統合するにはどうすればよいですか?

  • 私は試した

ImageAdapter = new ImageAdapter(this, android_versions);

しかし、コンストラクターが未定義になります。

2) android.R.layout.simple_list_item_1 がデフォルトの Android リストであり、R.layout.more_item である独自のカスタム レイアウトを使用したいので、間違っている場合は修正してください。

  • R.layout.simple_list_item_1 を R.layout.more_item に置き換えてみましたが、アプリケーションがクラッシュします。

私は何をすべきか?私は何を間違えましたか?

初投稿です、的外れな質問でしたら申し訳ありません。私が何を望んでいるかをあなたに理解してもらうのに十分なほど明確であることを願っています. 私はAndroidの知識が非常に低いので、誰かがここでそれを行う方法を教えてくれることを願っています. 前もって感謝します。

4

1 に答える 1

0

ImageAdapter = new ImageAdapter(this、android_versions);

しかし、コンストラクターが未定義になります。

あなたはフラグメントの中にいるので(活動中ではない)、 getActivity()の代わりに使用する必要がありますthis

I tried replacing R.layout.simple_list_item_1 with R.layout.more_item but my application crash.

デフォルトのArrayAdapterでカスタムレイアウトを直接使用することはできません。でクラッシュが発生した場合はImageAdapter、そのクラッシュログを投稿してください。

このようにしてみてください

ImageAdapter mAdapter = new ImageAdapter(getActivity(), android_versions);
mListView.setAdapter(mAdapter);
于 2012-10-10T05:50:38.450 に答える