Android 图像在列表视图中不可见

Android 图像在列表视图中不可见,android,android-listview,Android,Android Listview,我有一个带有图像和文本的自定义列表视图。现在,每当我最初打开列表视图时,图像都是可见的。现在,当我滚动列表时,图像是可见的。我还设置了当,但在开始时,所有图像都是相同的,只有在我滚动列表时图像才会更改。我知道此问题与列表的回收有关,但我无法解决。请帮助我 代码 公共类ShareWithMeAdapter扩展了BaseAdapter{ 私人语境; 私有数组列表数据; 公共ShareWithMeAdapter(上下文、ArrayList数据){ this.context=上下文; 这个数据=数据;

我有一个带有图像和文本的自定义列表视图。现在,每当我最初打开列表视图时,图像都是可见的。现在,当我滚动列表时,图像是可见的。我还设置了当,但在开始时,所有图像都是相同的,只有在我滚动列表时图像才会更改。我知道此问题与列表的回收有关,但我无法解决。请帮助我

代码

公共类ShareWithMeAdapter扩展了BaseAdapter{
私人语境;
私有数组列表数据;
公共ShareWithMeAdapter(上下文、ArrayList数据){
this.context=上下文;
这个数据=数据;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
view=LayoutFlater.from(context).充气(R.layout.share_with_me_custom_list,viewGroup,false);
holder.tvTitle=(TextView)view.findViewById(R.id.tv\u与me\u title共享);
holder.tvName=(TextView)view.findViewById(R.id.tv\u共享名称);
holder.tvSharedOn=(TextView)view.findviewbyd(R.id.tv\u sharedwhithme\u on);
holder.image=(ImageView)view.findViewById(R.id.iv_与me_image共享);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.tvTitle.setText(data.get(i.getTitle());
if(data.get(i).getName()等于(“”){
holder.tvName.setText(“与”+data.get(i.getName())共享);
}否则{
holder.tvName.setText(“与”+data.get(i.getName())共享);
}
holder.tvSharedOn.setText(data.get(i.getDate());
如果(data.get(i).getExtension().equals(“.jpg”)|| data.get(i).getExtension().equals(“.png”)| data.get(i).getExtension().equals(“.jpg”)| data.get(i).getExtension().equals(“.gif”)| data.get(i).getExtension().equals(“.tiff”)){
holder.image.setBackgroundResource(R.drawable.image);
}
if(data.get(i).getExtension()等于(“.docx”)| | data.get(i).getExtension()等于(.doc”)){
持有者.图像.背景资源(R.drawable.docx);
}
if(data.get(i).getExtension()等于(“.xls”)| | data.get(i).getExtension()等于(“.xlxs”)){
holder.image.setBackgroundResource(R.drawable.excel);
}
if(data.get(i).getExtension()等于(“.pdf”)){
holder.image.setBackgroundResource(R.drawable.pdf);
}
//if(data.get(i).getExtension()等于(“.ppt”)){
//支架.图像.立根资源(R.可绘制);
//        }
返回视图;
}
私有类视窗持有者{
text查看tvTitle、tvName、tvSharedOn;
图像视图图像;
}
}

试试这个,希望对你有帮助

全部替换

holder.image.setBackgroundResource(R.drawable.filename);

或者改变这些方法

@Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

试试这种方法,希望这能帮助你解决问题。

public class ShareWithMeAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<SharedWithMeModel> data;

    public ShareWithMeAdapter(Context context, ArrayList<SharedWithMeModel> data) {
        this.context = context;
        this.data = data;
    }

    @Override

    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int i) {
        return data.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        final ViewHolder holder;

        if (view == null) {
            holder = new ViewHolder();
            view = LayoutInflater.from(context).inflate(R.layout.share_with_me_custom_list, null);
            holder.tvTitle = (TextView) view.findViewById(R.id.tv_sharedwithme_title);
            holder.tvName = (TextView) view.findViewById(R.id.tv_sharedwithme_name);
            holder.tvSharedOn = (TextView) view.findViewById(R.id.tv_sharedwithme_on);
            holder.image = (ImageView) view.findViewById(R.id.iv_sharedwithme_image);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }


        holder.tvTitle.setText(data.get(i).getTitle());
        if (data.get(i).getName().equals("")) {
            holder.tvName.setText("Shared With " + data.get(i).getName());
        } else {
            holder.tvName.setText("Shared With " + data.get(i).getName());
        }
        holder.tvSharedOn.setText(data.get(i).getDate());

        if (data.get(i).getExtension().equals(".jpg") || data.get(i).getExtension().equals(".png") || data.get(i).getExtension().equals(".jpeg") || data.get(i).getExtension().equals(".gif") || data.get(i).getExtension().equals(".tiff")) {
            holder.image.setImageResource(R.drawable.image);
        }else if (data.get(i).getExtension().equals(".docx") || data.get(i).getExtension().equals(".doc")) {
            holder.image.setImageResource(R.drawable.docx);
        }else if (data.get(i).getExtension().equals(".xls") || data.get(i).getExtension().equals(".xlxs")) {
            holder.image.setImageResource(R.drawable.excel);
        }else{
            holder.image.setImageResource(R.drawable.pdf);
        }

        return view;
    }

    private class ViewHolder {
        TextView tvTitle;
        TextView tvName;
        TextView tvSharedOn;
        ImageView image;
    }
}
公共类ShareWithMeAdapter扩展了BaseAdapter{
私人语境;
私有数组列表数据;
公共ShareWithMeAdapter(上下文、ArrayList数据){
this.context=上下文;
这个数据=数据;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int i){
返回数据。获取(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
view=LayoutInflater.from(context).充气(R.layout.share\u with\u me\u custom\u list,null);
holder.tvTitle=(TextView)view.findViewById(R.id.tv\u与me\u title共享);
holder.tvName=(TextView)view.findViewById(R.id.tv\u共享名称);
holder.tvSharedOn=(TextView)view.findviewbyd(R.id.tv\u sharedwhithme\u on);
holder.image=(ImageView)view.findViewById(R.id.iv_与me_image共享);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.tvTitle.setText(data.get(i.getTitle());
if(data.get(i).getName()等于(“”){
holder.tvName.setText(“与”+data.get(i.getName())共享);
}否则{
holder.tvName.setText(“与”+data.get(i.getName())共享);
}
holder.tvSharedOn.setText(data.get(i.getDate());
如果(data.get(i).getExtension().equals(“.jpg”)|| data.get(i).getExtension().equals(“.png”)| data.get(i).getExtension().equals(“.jpg”)| data.get(i).getExtension().equals(“.gif”)| data.get(i).getExtension().equals(“.tiff”)){
holder.image.setImageResource(R.drawable.image);
}else if(data.get(i).getExtension()等于(“.docx”)| | data.get(i).getExtension()等于(.doc”)){
holder.image.setImageResource(R.drawable.docx);
}else if(data.get(i).getExtension()等于(“.xls”)| | data.get(i).getExtension()等于(.xlxs”)){
holder.image.setImageResource(R.drawable.excel);
}否则{
holder.image.setImageResource(R.drawable.pdf);
}
返回视图;
}
私有类视窗持有者{
文本视图标题;
文本视图tvName;
文本视图tvSharedOn;
图像视图图像;
}
}

能否添加listview的快照?data.get(i).getExtension().equals(“.jpg”)检查此行
@Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }
public class ShareWithMeAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<SharedWithMeModel> data;

    public ShareWithMeAdapter(Context context, ArrayList<SharedWithMeModel> data) {
        this.context = context;
        this.data = data;
    }

    @Override

    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int i) {
        return data.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        final ViewHolder holder;

        if (view == null) {
            holder = new ViewHolder();
            view = LayoutInflater.from(context).inflate(R.layout.share_with_me_custom_list, null);
            holder.tvTitle = (TextView) view.findViewById(R.id.tv_sharedwithme_title);
            holder.tvName = (TextView) view.findViewById(R.id.tv_sharedwithme_name);
            holder.tvSharedOn = (TextView) view.findViewById(R.id.tv_sharedwithme_on);
            holder.image = (ImageView) view.findViewById(R.id.iv_sharedwithme_image);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }


        holder.tvTitle.setText(data.get(i).getTitle());
        if (data.get(i).getName().equals("")) {
            holder.tvName.setText("Shared With " + data.get(i).getName());
        } else {
            holder.tvName.setText("Shared With " + data.get(i).getName());
        }
        holder.tvSharedOn.setText(data.get(i).getDate());

        if (data.get(i).getExtension().equals(".jpg") || data.get(i).getExtension().equals(".png") || data.get(i).getExtension().equals(".jpeg") || data.get(i).getExtension().equals(".gif") || data.get(i).getExtension().equals(".tiff")) {
            holder.image.setImageResource(R.drawable.image);
        }else if (data.get(i).getExtension().equals(".docx") || data.get(i).getExtension().equals(".doc")) {
            holder.image.setImageResource(R.drawable.docx);
        }else if (data.get(i).getExtension().equals(".xls") || data.get(i).getExtension().equals(".xlxs")) {
            holder.image.setImageResource(R.drawable.excel);
        }else{
            holder.image.setImageResource(R.drawable.pdf);
        }

        return view;
    }

    private class ViewHolder {
        TextView tvTitle;
        TextView tvName;
        TextView tvSharedOn;
        ImageView image;
    }
}