Android 正在从列表中获取itemid<;字符串>;
我正在开发墙纸应用程序 我实现这段代码是为了从资源中加载图片 它工作得很好,但我在从列表中获取itemid时遇到了问题,无法使用该id在fullscreenactivity或设置壁纸中显示其中一幅图像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
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) {
....
}