모든 항목에 대해 공유 단추가있는 사용자 지정 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)
맞으면 초기화해야합니다. 검색하고 있었지만 ArrayAdadapter의 경우 리스너를 초기화하는 방법을 여전히 파악하지 못했습니다. 감사합니다. –
. 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); –