-1

私は壁紙アプリに取り組んでいます。アセットから写真をロードするためにこのコードを実装しました loading-images-from-assets-folder

それはうまく機能していますが、リストからitemidを取得して、idを使用してこれらの画像の1つをフルスクリーンアクティビティで表示したり、壁紙を設定したりするのに問題があります

public long getItemId(int position) {

    return position ;
}

これが私のコードです

public class ImageAdapter extends BaseAdapter{
 private Context mContext;
private List<String> list;
private AssetManager assetManager;

public ImageAdapter(Context c, List<String> list) {
    mContext = c;
   this.list = list;

}

public int getCount() {

    return list.size();
}

public Object getItem(int position) {

    return position;
}

public long getItemId(int position) {

    return position;
}

public View getView(int position, View view, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);

    try {

        InputStream is = mContext.getAssets().open(list.get(position));
        Bitmap bm = BitmapFactory.decodeStream(is);
        imageView.setImageBitmap(bm);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(80, 80));
    } catch (IOException e) {

        e.printStackTrace();
    }
    // TODO Auto-generated method stub
    return imageView;
}



public class Gs3Wallpaper extends Activity {
private  ImageButton Gs3Button;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridView gridView = (GridView) findViewById(R.id.GridView1);
    try {
        gridView.setAdapter(new ImageAdapter(this ,getImage()));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    public List<String> getImage()throws IOException {
    AssetManager assetManager = getAssets();
    String[] files = assetManager.list("gallary");
    List<String> list = new ArrayList<String>();
    for (String it : files) {
        list.add("gallary"+File.separator + it);        

    }
    return list;

list.get(position)を使用しようとしたリストからIDを取得する方法がわかりませんが、intではなく文字列が返されるため、たとえばsetImageResourceに渡すことができません。

助言がありますか?

4

1 に答える 1

0

HashMapできることは、リスト項目を設定するgetView()ときに、やり方に応じて画像または画像へのパスを設定することです。positionをにkey、画像を として使用します。value

public class MyClass
{
    HashMap<String, Bitmap> imageMap = new HashMap<String, Bitmap>();
...

次に、それをあなたに設定しますgetView()

public View getView(int position, View view, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);

try {

    InputStream is = mContext.getAssets().open(list.get(position));
    Bitmap bm = BitmapFactory.decodeStream(is);
    imageView.setImageBitmap(bm);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(80, 80));

    String posString = String.valueOf(position);
    imageMap.put(posString, bm);
} catch (IOException e) {
....
}

このようなものがうまくいくはずです。次に、位置を使用して、そのビットマップをHashMap

于 2013-02-26T15:58:49.813 に答える