java - 我如何在 ArrayAdapter 类的 getView 方法中使用 startActivityForResult?

标签 java android android-intent

我想使用 startActivityForResult 从 ArrayAdapter 类调用另一个 Intent ,但我不能那样做。这是我的代码。

ArrayAdapter类构造函数

public QsShareManagerAdapter(Context context, String[] values, Long[] size,String[] time,
        boolean isRoot, Boolean[] attrdir, ArrayList<Boolean> selected,boolean type,
        LinearLayout linearLayout,String SHARE,String qsUsername) 
{
    super(context, R.layout.listlayout, values);
    this.context = context;
    this.values = values;
    this.size = size;
    this.time=time;
    this.isRoot = isRoot;
    this.attrdir = attrdir;
    this.selected = selected;
    this.type=type;
    this.linearLayout=linearLayout;
    this.SHARE=SHARE;
    this.qsUsername=qsUsername;
}





    @Override
public View getView(final int position, View convertView, ViewGroup parent) 
{
    String spliter = "/";
    tag=SHARE.split(spliter);

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.listlayout, parent, false);

    //
    addFiles=(Button)linearLayout.findViewById(R.id.add_files);
    manageUser=(Button)linearLayout.findViewById(R.id.manage_users);
    deleteSharedFolder=(Button)linearLayout.findViewById(R.id.delete_shared_folder);
    copyFiles=(Button)linearLayout.findViewById(R.id.copy);
    deleteFiles=(Button)linearLayout.findViewById(R.id.delete_files);

    addFiles.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
              Intent intent=new Intent(context,QsFileSelector.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  ;
              intent.putExtra(QsFileSelector.SELECTED_FILES,existing_seletedFile);
              intent.putExtra(QsFileSelector.FILE_OR_DIRECTORY, tag[6]);
              startActivityForResult(intent); 
            Toast.makeText(context, "Add Files", Toast.LENGTH_SHORT).show();
        }
    });

    manageUser.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "Manage User", Toast.LENGTH_SHORT).show();              
        }
    });

    deleteSharedFolder.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
              boolean status=serverURL.folderRequestResponseURI("DELETED_CREATOR", tag[6], qsUsername, tag[5], null, "");
              if(status){
                  Toast.makeText(context, "Delete Share Folder", Toast.LENGTH_SHORT).show();
              }
        }
    });

    copyFiles.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "Copy", Toast.LENGTH_SHORT).show();
        }
    });

    deleteFiles.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "Delete", Toast.LENGTH_SHORT).show();
        }
    });


    TextView textView = (TextView) rowView.findViewById(R.id.txtview);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView sizeView = (TextView) rowView.findViewById(R.id.size);

    final CheckBox checkbox = (CheckBox) rowView
            .findViewById(R.id.checkbox);

    String s = values[position];

    checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        int postion=position;
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
        {
            // TODO Auto-generated method stub
            if(isChecked){
                addToList(values[postion],true);
            }else{
                addToList(values[postion],false);                   
            }
        }
    });
    rowView.setTag(s);
    if (!values[position].contains("my_shared_folder") && isRoot && type) 
    {
        s = values[position] + " 's Shared Folder";
        textView.setText(s);
    } 
    else 
    {
        textView.setText(values[position]);
    }

    if (size.length != 0)
    {
        double sizeinKb = size[position] / 1024;

        if (sizeinKb > 1024) {
            double sizeinMb = sizeinKb / 1024;
            sizeView.setText(Double.toString(round(sizeinMb, 2,
                    BigDecimal.ROUND_HALF_UP)) + " MB | "+time[position]);
        }

        else if (sizeinKb > 1048576) {
            double sizeinGB = sizeinKb / (1024 * 1024);
            sizeView.setText(Double.toString(round(sizeinGB, 2,
                    BigDecimal.ROUND_HALF_UP)) + " GB | "+time[position]);
        }

        else {
            sizeView.setText(Double.toString(round(sizeinKb, 2,
                    BigDecimal.ROUND_HALF_UP)) + " KB | "+time[position]);
        }

    }

    if (attrdir[position]) 
    {
        imageView.setImageResource(R.drawable.icon_folder_logo);
        sizeView.setText("");
    }
    else 
    {
        checkbox.setVisibility(View.VISIBLE);
        if (s.contains(".mp3") || s.contains(".wav")) 
        {
            imageView.setImageResource(R.drawable.audio);
        }
        else if (s.contains(".zip") || s.contains(".rar")
                || s.contains(".tar")) 
        {
            imageView.setImageResource(R.drawable.zip);
        }
        else if (s.contains(".db")) 
        {
            imageView.setImageResource(R.drawable.db_icon);
        }
        else if ((s.contains(".png")) || (s.contains(".jpg"))) 
        {
            imageView.setImageResource(R.drawable.imagview);
        }
        else if ((s.contains(".doc")) || (s.contains(".docx"))) 
        {
            imageView.setImageResource(R.drawable.doc);
        }
        else if ((s.contains(".xls")) || (s.contains(".xlsx"))) 
        {
            imageView.setImageResource(R.drawable.excel);
        }
        else if ((s.contains(".pdf"))) 
        {
            imageView.setImageResource(R.drawable.pdf);
        }
        else 
        {
            imageView.setImageResource(R.drawable.unknown);
        }
    }
    /*
     * for(int i=0;i<size.size();i++){
     * sizeView.setText(Integer.toString(size.get(i))); }
     */     

    if(fileList.contains(values[position]) && checkStatus.contains(true)){
        linearLayout.setVisibility(View.VISIBLE);
        checkbox.setChecked(true);
    }

    if(fileList.size() == 0){
        linearLayout.setVisibility(View.GONE);
    }
    checkbox.setTag(values[position]);
    return rowView;
}

最佳答案

使用您拥有的 context 并将该上下文转换为 Activity 。喜欢:

((Activity)context).startActivityForResult(intent); 

关于java - 我如何在 ArrayAdapter 类的 getView 方法中使用 startActivityForResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447143/

相关文章:

java - Mysql表中的URL可以是超链接吗?

java - 使用方法在 ArrayList 中循环

java - 为什么我的 Android Studio 应用无法在 Android 设备上运行?

android - 我的 Activity 开始时如何显示电话输入软键盘?

java - 如何使一个 Java 线程在其某些子线程完成之前返回?

java - 如何修复 Android Cloud Firestore 文档快照

android - 异步任务问题

Android Intent的resolveActivity和Package Manager

android - 无法使用 FileProvider 在 Android N 中打开外部存储文件

android - 从电子邮件客户端返回后键盘未关闭