Android 如何从listview获取图像?
我想将图像从列表视图发送到其他活动。我想我已经完成了大部分工作,但我不断地得到nullpointerexeption。我的位图似乎是空的。如何将图像作为资源从choosen项传递到位图Android 如何从listview获取图像?,android,listview,bitmap,nullpointerexception,Android,Listview,Bitmap,Nullpointerexception,我想将图像从列表视图发送到其他活动。我想我已经完成了大部分工作,但我不断地得到nullpointerexeption。我的位图似乎是空的。如何将图像作为资源从choosen项传递到位图 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
ImageView imm_id = ((ImageView) arg1.findViewById(R.id.imagePrev));
imm_id.getId();
RequestDataHolder.request_id = ids.get(position);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), imm_id.getId());
ByteArrayOutputStream stream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] imm=stream.toByteArray();
Intent i = new Intent(getApplicationContext(),ResultViewActivity.class);
i.putExtra("imMap", imm);
startActivity(i);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
内部位置,长id){
ImageView imm_id=((ImageView)arg1.findViewById(R.id.imagePrev));
imm_id.getId();
RequestDataHolder.request_id=ids.get(位置);
位图Bitmap=BitmapFactory.decodeResource(getResources(),imm_id.getId());
ByteArrayOutputStream=新建ByteArrayOutputStream();
compress(bitmap.CompressFormat.PNG,90,stream);
字节[]imm=stream.toByteArray();
Intent i=新Intent(getApplicationContext(),ResultViewActivity.class);
i、 putExtra(“imMap”,imm);
星触觉(i);
适配器
public class MediaItemAdapter extends SimpleAdapter {
private int[] colors = new int[] { 0x30FF0000, 0x300000FF };
public static boolean notifyFlag = false;
private Context localContext;
private List<HashMap<String, Object>> locallist;
private static LayoutInflater inflater=null;
private Object rslv;
public ImageView imgV;
public String valueV;
Map cache = new HashMap();
public MediaItemAdapter(Context context,
List<HashMap<String, Object>> items, int resource,
String[] from,
int[] to) {
super(context, items, resource, from, to);
localContext = context;
locallist = items;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public void setViewText(TextView v, String text) {
// метод супер-класса, который вставляет текст
super.setViewText(v, text);
{
v.setText(Html.fromHtml(text));
}
}
@Override
public void setViewImage(ImageView v, String value) {
imgV = v;
valueV = value;
super.setViewImage(v, value);
if (imgV.getId() == R.id.imagePrev) {
if (value == null || value.trim().length() <= 0
|| value.equalsIgnoreCase("null")
|| value.trim().equalsIgnoreCase("")) {
imgV.setImageResource(R.drawable.stub);
// do nothing
} else {
if (cache.get(value) == null
&& !SearchPostActivity.loadingMore) {
notifyFlag = false;
new LazyImageLoader(localContext, value).execute();
} else {
imgV.setImageBitmap((Bitmap) cache.get(value));
}
}
}
}
class LazyImageLoader extends AsyncTask<String, Integer, Bitmap> {
private String URL;
private Context context;
public LazyImageLoader(Context context, String Url) {
URL = Url;
LazyImageLoader.this.context = context;
}
@Override
protected void onPreExecute() {
imgV.setImageResource(R.drawable.home);
}
@Override
protected Bitmap doInBackground(String... params) {
return getImg();
}
@Override
protected void onPostExecute(Bitmap img) {
if (!SearchPostActivity.scrollFlag) {
imgV.setImageBitmap(img);
notifyDataSetChanged();
}
notifyFlag = true;
cache.put(URL, img);
}
public synchronized Bitmap getImg() {
Bitmap bm = null;
try {
URL myurl;
myurl = new URL(URL);
URLConnection conn = myurl.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
bm = BitmapFactory.decodeStream(is);
} catch (Exception e) {
e.printStackTrace();
}
return bm;
}
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item_composer, null);
ImageView thumb_image=(ImageView)vi.findViewById( R.id.imagePrev);
return vi;
}
}
公共类MediaItemAdapter扩展了SimpleAdapter{
私有int[]颜色=新int[]{0x30FF0000,0x300000FF};
公共静态布尔notifyFlag=false;
私有上下文localContext;
私有列表locallist;
专用静态充气机=空;
私有对象rslv;
公共图像视图imgV;
公共字符串值v;
映射缓存=新的HashMap();
公共MediaItemAdapter(上下文,
列表项,int资源,
字符串[]来自,
int[]至){
超级(上下文、项目、资源、发件人、收件人);
localContext=context;
locallist=项目;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
公共void setViewText(文本视图v,字符串文本){
// метод супер-класса, который вставляет текст
super.setViewText(v,text);
{
v、 setText(Html.fromHtml(text));
}
}
@凌驾
public void setViewImage(ImageView v,字符串值){
imgV=v;
valueV=值;
super.setViewImage(v,值);
if(imgV.getId()==R.id.imagePrev){
如果(value==null | | value.trim().length()请尝试以下操作
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(final AdapterView<?> adapterView, final View view, final int position, final long id) {
final ImageView imageView = (ImageView) view.findViewById(R.id.imageViewXYZ);
final BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
final Bitmap yourBitmap = bitmapDrawable.getBitmap();
}
});
yourListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(最终适配器视图适配器视图、最终视图视图、最终整型位置、最终长id){
final ImageView ImageView=(ImageView)view.findViewById(R.id.imageViewXYZ);
final BitmapDrawable BitmapDrawable=(BitmapDrawable)imageView.getDrawable();
最终位图yourBitmap=bitmapDrawable.getBitmap();
}
});
最好使用调试工具在以下位置查找getResources()
和imm\u id.getId()的值
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),imm_id.getId());