Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在从列表中获取itemid<;字符串>;_Android_Gridview_Baseadapter - Fatal编程技术网

Android 正在从列表中获取itemid<;字符串>;

Android 正在从列表中获取itemid<;字符串>;,android,gridview,baseadapter,Android,Gridview,Baseadapter,我正在开发墙纸应用程序 我实现这段代码是为了从资源中加载图片 它工作得很好,但我在从列表中获取itemid时遇到了问题,无法使用该id在fullscreenactivity或设置壁纸中显示其中一幅图像 public long getItemId(int position) { return position ; } 这是我的密码 public class ImageAdapter extends BaseAdapter{ private Context mContext; pri

我正在开发墙纸应用程序 我实现这段代码是为了从资源中加载图片

它工作得很好,但我在从列表中获取itemid时遇到了问题,无法使用该id在fullscreenactivity或设置壁纸中显示其中一幅图像

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;
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
私人名单;
私人资产管理人资产管理人;
公共ImageAdapter(上下文c,列表){
mContext=c;
this.list=列表;
}
public int getCount(){
返回list.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(内部位置、视图视图、视图组父视图){
ImageView ImageView=新的ImageView(mContext);
试一试{
InputStream=mContext.getAssets().open(list.get(position));
位图bm=BitmapFactory.decodeStream(is);
设置图像位图(bm);
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
setLayoutParams(新的GridView.LayoutParams(80,80));
}捕获(IOE异常){
e、 printStackTrace();
}
//TODO自动生成的方法存根
返回图像视图;
}
公共类GS3Wallper扩展活动{
专用图像按钮GS3按钮;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView GridView=(GridView)findViewById(R.id.GridView1);
试一试{
setAdapter(新的ImageAdapter(this,getImage());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
公共列表getImage()引发IOException{
AssetManager AssetManager=getAssets();
String[]files=assetManager.list(“gallary”);
列表=新的ArrayList();
用于(字符串:文件){
list.add(“gallary”+File.separator+it);
}
退货清单;

我不知道如何从我尝试使用list.get(position)的列表中获取id,但它返回的字符串不是int,因此我无法将其传递给setImageResource


有什么建议吗?

设置列表项时,您可以在
getView()
中的
HashMap
中根据您的操作方式设置图像或图像路径。使用
键的
位置
,将图像作为

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

像这样的东西应该适合你。然后使用位置从
HashMap

中获取位图一个建议,告诉我们获取你的id有什么问题我不知道如何从我尝试使用的列表中获取id。获取(位置)但它返回的字符串不是int。您是否尝试过使用
onListeItemClick(ListView l,View v,int position,long id)
然后
v.getId()
?我尝试了很多解决方案,但都没有成功。我仍然无法通过id或位置获得特定图像。有人能提出一些建议吗?
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) {
....
}