0

一部の画像のみ、つまりテキストなしでリスト ビューを設定しようとしています。ここに私のファイルがあります:

//the Main File:
    public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listview1 = (ListView)findViewById(R.id.listView1);
        final Integer[] mThumbIds = {
                R.drawable.blue, R.drawable.blue2, 
                R.drawable.blue3, R.drawable.blue4,
                R.drawable.blue5, R.drawable.blue6
        };
        listview1.setAdapter(new ImageAdapter(this,mThumbIds));
        listview1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
               //Upon Clicking
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    class ImageAdapter extends ArrayAdapter<Integer> {
        private Context mContext;
        Integer [] resources;
        public ImageAdapter (Context c, Integer[] resources) {
            super(c, R.layout.activity_main, resources);
            //System.out.println("Set up of Image Adapter");
            mContext = c;
            this.resources=resources;
            for(Integer resource:resources){
                System.out.println(resource);
            }
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.activity_main, parent, false);
            ImageView imageView = (ImageView) rowView.findViewById(R.layout.image_view);
            imageView.setImageResource(resources[position]);
            return rowView;
        }    
    }
   }

XML は次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/export_folder_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Formation Name:"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    <ListView
        android:id="@+id/listView1"        
        android:layout_below="@+id/color_textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:columnWidth="90dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        android:background="#ff000000" >
     </ListView>
</RelativeLayout>

最後に、ImageView を定義するもの:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:minHeight="64dp">
    <ImageView
            android:id="@+id/imageView"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="9dp"
            android:layout_alignParentTop="true"/>
</RelativeLayout>

残念ながら、画像ビューで画像リソースを設定した時点で NullPointerExceptions が発生します。画像リソースが存在することを確認しました。何が間違っているのかわかりません。Android は初めてです。ありがとうございました。

4

3 に答える 3

2

getView() で間違った xml を膨らませているようです。

View rowView = inflater.inflate(R.layout.activity_main, parent, false);

ここで R.layout.activity_main は、ImageView を含む xml ファイルに置き換える必要があります。

そして、あなたのコードから、ImageView を含む xml ファイルの名前は、R.layout.image_view

したがって、最終的なコードは次のようになります。

View rowView = inflater.inflate(R.layout.image_view, parent, false);
            ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView);
            imageView.setImageResource(resources[position]);
于 2013-08-16T05:07:06.163 に答える
1

次のコードリンクを試してください:-

public View getView(int 位置、View convertView、ViewGroup 親) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View rowView = inflater.inflate(rowResourceId, parent, false);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView);


    int id = Integer.parseInt(Ids[position]);
    String imageFile = Model.GetbyId(id).IconFile;


    // get input stream
    InputStream ims = null;
    try {
        ims = context.getAssets().open(imageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
    // load image as Drawable
    Drawable d = Drawable.createFromStream(ims, null);
    // set image to ImageView
    imageView.setImageDrawable(d);
    return rowView;

}

}

于 2013-08-16T05:07:01.587 に答える