2012-12-05 2 views
1

Fragment에서 호출 (생성)하려는 ArrayAdapter가 있습니다. 액티비티에서는 수행하는 것이지만 프래그먼트에서는 수행하지 않는 방법을 알고 있습니다. 너희들이 올바른 구문을 줄 수 있니?조각에서 새 listadapter를 작성하십시오. 액티비티에서 액티비티를 수행하는 방법을 알고 있지만 프래그먼트가 아닌 액터에서 수행하는 방법을 알고 있습니다.

어쨌든 나는 조각

ShareHoldingAdapter adapter = new ShareHoldingAdapter(this, R.layout.listview_item_row, allShareHoldings); 

에서 다음을 수행하려고하지만 내 어댑터 생성자 ShareHoldingAdapter(Context portfolioFragMent, int layoutResourceId, ArrayList<ShareHolding> data) IE 자사의 "컨텍스트"가 아닌 "PortolioFragment"또는 단순히 조각을 가지고

어떻게 것 지금 대신 단편에서 전화를 작동 할 수 있도록 내 어댑터를 변경 (활동에서?) 여기

내 어댑터 코드

입니다
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

public class ShareHoldingAdapter extends ArrayAdapter<ShareHolding>{ 

    Context context; 
    int layoutResourceId;  
    ArrayList<ShareHolding> data = null; 
    private ShareHolder holder; 
    private ShareHolding shareHold; 


    private int buttonPressed = 0; 
    public void setButtonPressed(int buttonPressed) { 
     this.buttonPressed = buttonPressed; 
     notifyDataSetChanged(); 
    } 


    public ShareHoldingAdapter(Context portfolioFragMent, int layoutResourceId, ArrayList<ShareHolding> data) {//Need to change this constructor to accept a fragment instead of an activiy (context) 
     super(portfolioFragMent, layoutResourceId, data); 
     this.layoutResourceId = layoutResourceId; 
     this.context = portfolioFragMent; 
     this.data = data; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     holder = null; 

     if(row == null) 
     { 
      LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new ShareHolder(); 
      holder.imgIcon = (TextView)row.findViewById(R.id.imgen); 
      holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle); 

      row.setTag(holder); 
     } 
     else 
     { 
      holder = (ShareHolder)row.getTag(); 
     } 

     shareHold = data.get(position); 
     holder.txtTitle.setText(shareHold.getName()); 

     //buttonPressed 

     switch (buttonPressed) { 
     case 0: 
      holder.imgIcon.setText(Double.toString(shareHold.getSharesChangeTodayPercent())); 
      break; 
     case 1: 
      holder.imgIcon.setText(Double.toString(shareHold.getCurrentRate())); 
      break; 
     case 2: 
      holder.imgIcon.setText(Double.toString(shareHold.getNrOfSharesInPortfolio())); 
      break; 
     case 3: 
      holder.imgIcon.setText(Double.toString(shareHold.getTotalPercentDifference())); 
      break; 
     case 4: 
      holder.imgIcon.setText(Double.toString(shareHold.getTotalDiffrenceKr())); 
      break; 
     case 5: 
      holder.imgIcon.setText(Double.toString(shareHold.getTotalKr())); 
      break; 
     default: 
      holder.imgIcon.setText(Double.toString(shareHold.getBuyingRate())); 
     } 

     //holder.imgIcon.setText(Double.toString(weather.getBuyingRate())); 
     return row; 
    } 

    static class ShareHolder 
    { 
     TextView imgIcon; 
     TextView txtTitle; 
    } 
} 

답변

0

는 호출해야 조각에서 어댑터를 만들려면 다음

ShareHoldingAdapter adapter = new ShareHoldingAdapter(getActivity(), R.layout.listview_item_row, allShareHoldings); 

Context

의 서브 클래스가 반환 Activity Fragment.getActivity() 이후
관련 문제