2014-12-12 3 views
0

모든 항목에 대해 공유 단추가있는 사용자 지정 ArrayAdapter가 있습니다. 나는 페이스 북 공유 대화 상자를 정기적 인 활동에 문제없이 사용하지만, 이제는 목록 항목을 공유 할 수 없다.ArrayAdapter 내 Facebook 공유 대화 상자를 사용하여 콘텐츠 공유?

내가 맞다면, 페이스 북 공유 대화 상자는 잘 작동하는 작업이 필요합니다. 물론 사용자 정의 ArrayAdapter에는 작업이 없지만 개별 항목의 데이터를 공유 대화 상자로 전달해야합니다 클래스 맞지?

인터페이스를 사용하여 이미지 주소와 이름을 기본 활동으로 되돌리려 고했지만 버튼을 누르면 충돌이 계속 발생했습니다.

올바른 방향으로 가고 있습니까, 아니면 목록보기에서 항목 데이터를 공유 할 수있는 다른 방법이 있습니까?

감사합니다.

FeedGridViewAdapter (custom ArrayAdapter): 

    public class FeedGridViewAdapter extends ArrayAdapter<FeedItemsSetter> { 
     private Context context; 
     private int layoutResourceId; 
     private ArrayList<FeedItemsSetter> data = new ArrayList<FeedItemsSetter>(); 
     private TextView locationName; 
     private ImageView image; 
     private ImageView feedUserImage; 
     private TextView cityName; 
     private TextView userInfo; 
     private String[] separatedLikerData; 
     private FeedItemsSetter item; 

     public interface facebookShareListener { 
      public void onSharePressed(String values); 
     } 

     facebookShareListener mListener;  

     public FeedGridViewAdapter(Context context, ArrayList<FeedItemsSetter> data) { 
      super(context, android.R.id.content, data); 
      this.context = context; 
      this.data = data; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      LayoutInflater vi = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View view = vi.inflate(R.layout.feed_grid, null); 

       item = data.get(position);   

       TextView[] likers = new TextView[10]; 

       locationName = (TextView) view.findViewById(R.id.locName); 
       locationName.setText(item.getTitle()); 

       cityName = (TextView) view.findViewById(R.id.cityName); 
       cityName.setText(item.getCategory()); 

       userInfo = (TextView) view.findViewById(R.id.feedUserName); 
       userInfo.setText(item.getUser()); 

       feedUserImage = (ImageView) view.findViewById(R.id.feedUserImage); 
       Picasso.with(context) 
       .load("https://graph.facebook.com/" + item.getUserId() + "/picture?type=large") 
       .placeholder(R.drawable.placeholder) 
       .error(R.drawable.ic_launcher) 
       .transform(new RoundedTransformation(90, 4)) 
       .resize(100, 100)   
       .centerCrop() 
       .into(feedUserImage); 

       image = (ImageView) view.findViewById(R.id.image);   
       Picasso.with(context).load("http://www.edmondvarga.com/gastrolove/uploads/" + item.getImage()) 
       .into(image); 

       separatedLikerData = item.getLiker().split(","); 

       if(separatedLikerData.length < 5){ 
       LinearLayout layout = (LinearLayout) view.findViewById(R.id.likerNames);    
       likers[position] = new TextView(context); 
       likers[position].setText(separatedLikerData[0] + ", "); 
       likers[position].setTextColor(Color.parseColor("#d52e2e")); 
       likers[position].setTypeface(null, Typeface.BOLD_ITALIC); 
       likers[position].setTextSize(13);     

       layout.addView(likers[position]); 

       likers[position].setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) {        
         Intent in= new Intent(context, UserProfile.class); 
         in.putExtra("user", separatedLikerData[0]); 
         in.putExtra("userId", separatedLikerData[1]); 
         context.startActivity(in);        
        } 

       }); 
       } 

       //-----------Iterface implmentation ----------------- 

       Button feedShare = (Button) view.findViewById(R.id.feedShareBtn); 
       feedShare.setOnClickListener(new OnClickListener() { 
        @Override 
         public void onClick(View v) {      
         mListener.onSharePressed("image link"); 
        } 
        }); 

      return view; 
     } 

    } 

메인 클래스 :

... 

public class OffersFragmentActivity extends Fragment implements 
     OnItemClickListener, FeedGridViewAdapter.facebookShareListener { 

    private GridView gridView; 
    private GridViewAdapter customGridAdapter; 
    ArrayList<ImageItem> imageItems = new ArrayList<ImageItem>(); 
    View v; 
    private SQLiteDataSource datasource; 
    private ListView TasteMakersListView; 
    private ArrayList<TasteMakers> tasteMakersList = new ArrayList<TasteMakers>(); 
    private TasteMakers member; 
    private GridView feedGridView; 
    private String user; 
    private ArrayList<FeedItemsSetter> feedList = new ArrayList<FeedItemsSetter>(); 
    protected String names; 
    private UiLifecycleHelper uiHelper; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     super.onCreateView(inflater, container, savedInstanceState); 
     v = inflater.inflate(R.layout.offers_view, null, false); 

     SharedPreferences preferences = getActivity().getSharedPreferences(
       "USERINFO", Context.MODE_PRIVATE); 
     user = preferences.getString("name", null); 

     feedGridView = (GridView) v.findViewById(R.id.feedGridView); 
     gridView = (GridView) v.findViewById(R.id.gridView); 
     TasteMakersListView = (ListView) v 
       .findViewById(R.id.RecomendedUsersList); 

     feedGridView.setFocusable(false); 
     gridView.setFocusable(false); 
     TasteMakersListView.setFocusable(false); 

... 


    @Override 
    public void onSharePressed(String values) { 
     System.out.println("Share button pressed!" + values); 

    } 

    ... 

로그 캣 :

12-12 20:30:54.926: E/AndroidRuntime(9647): FATAL EXCEPTION: main 
12-12 20:30:54.926: E/AndroidRuntime(9647): Process: com.fideli, PID: 9647 
12-12 20:30:54.926: E/AndroidRuntime(9647): java.lang.NullPointerException 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at com.fideli.userimages.FeedGridViewAdapter$2.onClick(FeedGridViewAdapter.java:111) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.view.View.performClick(View.java:4654) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.view.View$PerformClick.run(View.java:19438) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.os.Handler.handleCallback(Handler.java:733) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.os.Handler.dispatchMessage(Handler.java:95) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.os.Looper.loop(Looper.java:146) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at android.app.ActivityThread.main(ActivityThread.java:5602) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at java.lang.reflect.Method.invoke(Method.java:515) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
12-12 20:30:54.926: E/AndroidRuntime(9647):  at dalvik.system.NativeStart.main(Native Method) 

답변

0

당신은 당신의 mListener 변수가 null 인 것을 나타내는 것 같은 NPE를 받고 있습니다. 실제로 활동에서 청취자를 설정 했습니까?

또한 ArrayAdapter 클래스에는 Activity 클래스에서 만든 Activity 일 가능성이있는 Context가 있습니다.이 클래스를 사용하고 공유 대화 상자로 전달하는 이유는 무엇입니까? 공유 대화 상자에는 단편 만있는 경우 단편을 사용할 수도 있습니다.

+0

맞으면 초기화해야합니다. 검색하고 있었지만 ArrayAdadapter의 경우 리스너를 초기화하는 방법을 여전히 파악하지 못했습니다. 감사합니다. –

+0

. arraylist를 사용자 정의 배열 어댑터에 추가 할 때 수신기를 초기화해야했습니다. FeedGridViewAdapter feedGridAdapter = new FeedGridViewAdapter ( \t \t \t \t getActivity(), feedList); \t \t feedGridAdapter.setCallback (this); \t \t feedGridView.setAdapter (feedGridAdapter); \t \t feedGridView.setOnItemClickListener (this); –

관련 문제