2012-05-04 7 views
4

startActivityForResultを使用してArrayAdapterクラスから別のインテントを呼び出したいが、それはできない。ここに私のコードがある。 ArrayAdapterクラスのgetViewメソッドでstartActivityForResultを使用するにはどうすればよいですか?

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; 
} 

答えて

5
addFiles.setFocusable(false); 

私はあなたがActivityContextを変更すべきだと思う...あなたのアダプタのコンストラクタでは、それ... activity.startActivityForResult(意図、位置)を変更します。

+0

これは機能しません。私はすでにそれをしています。 –

+0

なぜ?私の更新された回答を参照してください –

+0

startActivityForResult(Intent、int)メソッドは、タイプContextのために未定義です。これは更新後にエラーとなります。 –

0

なぜあなたはできませんか?あなたはそのコンテキストを持っています。

更新:アクティビティにキャストするか、タイプを変更する必要があります。

+0

これは答えではなく、この代わりにコメントを投稿してください。 –

+0

私はこのコンテキストを使ってコンテキストを持っていることを知っています。私はcontext.startActivity、context.startServiceにアクセスできますが、context.startActivityForResultにはアクセスできません。 –

+0

@NeverQuit実践的な質問ではなく、本当の質問です。 –

8

あなたが持っているコンテンツをcontextとし、そのコンテキストをアクティビティにキャストします。以下のような:

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

@Downvoter - 説明するケア? – MByD

+0

がキャスト例外を発生しました。 ? – chhameed

0

使用

getApplicationContext().startActivityForResult(intent); 
0

あなたはコンテキスト

((活動)コンテキスト).startActivityForResult必要これを達成するために(意図を、1);

あなただけの活動を開始する必要がある場合は、この

context.startActivityForResult好きです(意図、1);