2014-12-04 48 views
0

我已经做了一个自定义列表视图的BaseAdapter.Now的帮助下,我有一个条件来检查,并根据该条件我必须隐藏取消隐藏列表中的按钮。在开始时它工作正常但当我滚动列表中的按钮不在其预期的地方。我知道这是由于列表的refressing,但请你能建议我如何克服它,因为我是新的android。滚动列表给出意想不到的结果

代码

public class RecentDocumentAdapter extends BaseAdapter { 

    FragmentManager fragmentManager; 
    Activity activity; 
    DbHandler dbHandler; 
    DbModel dbModel; 
    private Context context; 
    private AlertDialog.Builder builder; 
    private String[] shareArray; 
    private Dialog dialog; 
    private FragmentTransaction fragmentTransaction; 
    private ArrayList<DbModel> alGetRecentFiles; 
    private Bundle bundle; 


    public RecentDocumentAdapter(Context context, Activity activity, ArrayList<DbModel> alGetRecentFiles) { 
     this.context = context; 
     this.activity = activity; 
     this.alGetRecentFiles = alGetRecentFiles; 
     bundle = new Bundle(); 
    } 

    @Override 
    public int getCount() { 
     return alGetRecentFiles.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return null; 
    } 

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

    @Override 
    public View getView(final int i, View view, ViewGroup viewGroup) { 
     final ViewHolder holder; 

     if (view == null) { 
      holder = new ViewHolder(); 
      view = LayoutInflater.from(context).inflate(R.layout.recent_docs_custom_list, viewGroup, false); 
      holder.docsImage = (ImageView) view.findViewById(R.id.iv_recent_docs_image); 
      holder.tvTitle = (TextView) view.findViewById(R.id.tv_recent_name); 
      holder.tvPostedOn = (TextView) view.findViewById(R.id.tv_recent_posted_on); 
      holder.btShare = (Button) view.findViewById(R.id.bt_recent_share); 
      holder.btFav = (Button) view.findViewById(R.id.bt_recent_fav); 

      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 

if (alGetRecentFiles.get(i).getCheckType() == 2) { 
       holder.btShare.setVisibility(View.GONE); 
      } 


     holder.tvTitle.setText(alGetRecentFiles.get(i).getTitle() + alGetRecentFiles.get(i).getFileExtension()); 
     holder.tvPostedOn.setText(alGetRecentFiles.get(i).getPostedOn()); 

     if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".jpg") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".jpeg") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".png") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".gif") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".tiff")) { 
      holder.docsImage.setImageResource(R.drawable.image); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".doc") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".docx")) { 
      holder.docsImage.setImageResource(R.drawable.docx); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".xls") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".xlsx")) { 
      holder.docsImage.setImageResource(R.drawable.excel); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".ppt") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".pptx")) { 
      holder.docsImage.setImageResource(R.drawable.ppt); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".pdf")) { 
      holder.docsImage.setImageResource(R.drawable.pdf); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase(".txt")) { 
      holder.docsImage.setImageResource(R.drawable.txt); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("3gp") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("mp4") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("mkv") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("wmv") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("flv") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("avi") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("mpeg") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("mov") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("divx") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("div")) { 
      holder.docsImage.setImageResource(R.drawable.video); 
     } else if (alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("mp3") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("wma") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("aac") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("wav") || alGetRecentFiles.get(i).getFileExtension().equalsIgnoreCase("m4a")) { 
      holder.docsImage.setImageResource(R.drawable.audio); 
     } else { 
      holder.docsImage.setImageResource(R.drawable.help); 
     } 


     if (alGetRecentFiles.get(i).getFavourites().equals("1")) { 
      holder.btFav.setVisibility(View.VISIBLE); 


     } else { 
      holder.btFav.setVisibility(View.GONE); 
     } 


     holder.btShare.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       bundle.putString("docId", alGetRecentFiles.get(i).getDocId()); 
       bundle.putString("title", alGetRecentFiles.get(i).getTitle()); 
       bundle.putString("path", alGetRecentFiles.get(i).getFilePath()); 
       bundle.putString("ext", alGetRecentFiles.get(i).getFileExtension()); 
       bundle.putString("fileName", alGetRecentFiles.get(i).getFileName()); 
       bundle.putInt("hasPassword", alGetRecentFiles.get(i).getHasPassword()); 
       bundle.putString("password", alGetRecentFiles.get(i).getPassword()); 
       fragmentTransaction = activity.getFragmentManager().beginTransaction(); 
       ShareWithinpocketDocs shareWithinpocketDocs = new ShareWithinpocketDocs(); 
       shareWithinpocketDocs.setArguments(bundle); 
       fragmentTransaction.replace(R.id.frag_container, shareWithinpocketDocs, "shareWithinPocketDocs"); 
       fragmentTransaction.addToBackStack("shareWithinPocketDocsBack").commit(); 
      } 
     }); 

     return view; 
    } 

    private class ViewHolder { 
     private ImageView docsImage; 
     private TextView tvTitle, tvPostedOn; 
     private Button btShare, btFav; 

    } 
} 

回答

1

尝试在其他情况下可见的共享按钮:

if (alGetRecentFiles.get(i).getCheckType() == 2) { 
    holder.btShare.setVisibility(View.GONE); 
}else{ 
    holder.btShare.setVisibility(View.VISIBLE); 
} 

注:使用equals()的字符串比较,而不是==

相关问题