当前位置: 首页 > 知识库问答 >
问题:

在android中利用HorizontalView中的

殷承恩
2023-03-14

这是我的主要活动。java:

            ContentResolver cr=getContentResolver();

            phones=cr.query(android.provider.Contacts.People.CONTENT_URI,null, android.provider.Contacts.People._ID + "=?", new String[]{String.valueOf(""+pVal[i])},null);


            Log.d("Curdsr="," "+phones);

            while (phones.moveToNext()) {   

                String name=phones.getString(phones.getColumnIndex(android.provider.Contacts.People.DISPLAY_NAME));
                String phoneNumber=phones.getString(phones.getColumnIndex(android.provider.Contacts.People.NUMBER));
                int PhotoId=phones.getColumnIndex(android.provider.Contacts.People._ID);


                Log.d("PathVal=",""+PhotoId);
                Log.d("P-Name=",name);

                long phId=phones.getLong(PhotoId);

                //String phoneNumber=getPhoneNumber(phId);
                //getPhoto(phId);
                Bitmap photoVal=getPhoto(phId);

                Log.d("PhoyId=",phId+"");


                 // RETRIEVE THE CONTACT PHOTO AS A BITMAP
                Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, phId);
                Bitmap bitmap = People.loadContactPhoto(getApplicationContext(), uri, R.drawable.no_image, null);

                // SET IT HERE IN THE IMAGEVIEW
              //  profile.setImageBitmap(bitmap);

                ContactBean objContact = new ContactBean();
                objContact.setId(PhotoId);
                objContact.setName(name);
                objContact.setpId(phId);
                objContact.setPhoneNo(phoneNumber);


                objContact.setImage(phId);
                objContact.setPicture(bitmap);
                list.add(objContact);

        }
    }

    phones.close();

    objAdapter = new ContanctAdapter(
    this, R.layout.alluser_row, list);
    //listView.setAdapter(objAdapter);

    listview1.setAdapter(objAdapter);

这里是我的适配器类,名为“ContactsAdapter.java”

公共类ContanctAdapter扩展ArrayAdapter{

private Activity activity;
private List<ContactBean> items;
private int row;
private ContactBean objBean;

public ContanctAdapter(Activity act, int row, List<ContactBean> items) {
    super(act, row, items);
    //super(act, R.layout.alluser_row, items);

    this.activity = act;
    this.row = row;
    this.items = items;

}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

ImageView Parcel=new ImageView(this.getContext());
     System.out.println("getview:"+position+" "+convertView);

    View view = convertView;
    ViewHolder holder;
    if (convertView == null) {

        Log.d("CustomArrayAdapter", "New");
        //LayoutInflater inflater=activity.getLayoutInflater();
        LayoutInflater inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(row,parent, false);
        Log.d("View Value",view.toString());
        holder = new ViewHolder();

        holder.Imagess=(ImageView) view.findViewById(R.id.imageView1);
        holder.tvname=(TextView) view.findViewById(R.id.tvname);

        //holder.tvname=(TextView)view.findViewById(R.id.tvnames);
        //tvName=(TextView)findViewById(R.id.tvname);

    //  holder.Imagess.setVisibility(View.VISIBLE);

        view.setTag(holder);            


    } else {

        Log.d("pathChange","hi");

        holder = (ViewHolder) view.getTag();

    }

    objBean = items.get(position);      

    holder.tvname.setText(objBean.getName());
    holder.tvname.bringToFront();
    Log.d("Names", objBean.getName());        
    Log.d("thisItem","This Item is Index " + position + " " + view.toString() + " " + Integer.toHexString(System.identityHashCode(view)));
    holder.Imagess.setImageBitmap(objBean.getPicture());

    if((position-4)>=0){

        items.get(position-4).getPicture().recycle();
    }
    else{
        Log.d("before",""+position);
    }


    return view;
}

public class ViewHolder {
    public TextView tvname, tvPhoneNo;
    public ImageView  Imagess;
}

请帮帮我..提前道谢。

共有1个答案

解河
2023-03-14

我已经检查了你粘贴的链接。在被接受的答案中,我可以在回收后找到这一行

listBitmap(position-3).setBitmap(null);

在回收位图之后,他将ImageView位图设置为空,这样画布就不会尝试加载它。由于您没有在代码中调用上面的行,canvas将尝试加载您已经回收的位图。请将您的代码更改为

if((position-4)>=0){
    items.get(position-4).getPicture().recycle();
    items.get(position-4).<relevant_function_call_to_set_Picture>(null);
} 

希望这有帮助。

 类似资料:
  • 这段代码在Samsung tab中工作,但在Lenovo tab和i-ball tab中不工作。那么,有没有人能帮我找到另一种解决方法来做同样的事情呢?任何帮助都将不胜感激。谢谢你。 这是我的OnActivityResult:

  • 在web应用程序(在eclipse上开发)中,我希望用户在浏览器中使用url。Web应用程序是基于java spring mvc的,控制器返回html页面。所有html页面都在WebContent/WEB-INF/Views文件夹中。所有css\javacript\images都在webcontent/resources/{css\javacript\images}文件夹中。 null null

  • 我需要观察Modelview中的livedata更改来更新片段(将列表添加到RecycerView中)。 该实现工作正常,但在片段之间切换时面临问题。 并试图将观察者移除为:或或或尝试在

  • 不知道在Android房间查询中使用表名时,如何避免硬编码?我用开发,但老实说,在这个问题上,Java还是kotlin并不重要。 让我们看看简单的类: DAO接口: 实体类: 您可以看到表名“user”是在userDAO中的@query中硬编码的。如何避免呢?如何引用@Entity参数TableName? 我想有所有的名字在一个而且只有一个地方。

  • 本文向大家介绍利用Kotlin如何实现Android开发中的Parcelable详解,包括了利用Kotlin如何实现Android开发中的Parcelable详解的使用技巧和注意事项,需要的朋友参考一下 坑 先来看看 Android Studio 给的自动实现。 新建一个数据类,让它实现 Parcelable 使用 Android Studio 自带的 Add Parcelable Impleme

  • 本文向大家介绍Android中利用viewflipper动画切换屏幕效果,包括了Android中利用viewflipper动画切换屏幕效果的使用技巧和注意事项,需要的朋友参考一下 整个项目的 感悟:ViewFlipper貌似可以做成新下载的应用 ,用户第一次进入的大概描述。。最后再做个button,进入应用。 1.先在main.xml文件中添加viewflipper,然后在MainActivity