목록보기 내부의 구성 요소를 클릭 할 때 발생하는 새 조각으로 데이터 전달

enu

배열 어댑터의 데이터로 채워진 목록보기 조각이 있습니다. 목록보기의 각 항목에는 프로필 이미지 (ImageView) 및 설명 (TextView)이 포함됩니다. 리스트 뷰에서 이미지를 누르면 다른 프래그먼트가리스트 뷰 프래그먼트를 대체하고 후기 프래그먼트는 눌려진 이미지가있는리스트 항목에 포함 된 데이터로 채워 져야하는 방식으로하고 싶습니다. 지금까지 내가 한 것은 CustomAdaptor 클래스의 이미지에 대한 클릭 리스너를 구현하여 목록보기에서 클릭 한 항목의 인덱스를 가져 와서 정보를 가져 오는 것입니다. 그러나 이미지 클릭에서 검색된 데이터로 새 조각을 채우지 못합니다.

이것은 내 사용자 정의 어댑터입니다.

public class PostListAdaptor extends ArrayAdapter<Post>{

private Context context;
private ArrayList<Post> posts;

public PostListAdaptor(Context context, ArrayList<Post> objects)
{
    super(context, R.layout.item_post, objects);

    this.context = context;
    this.posts = objects;
}


@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View row = inflater.inflate(R.layout.item_post, parent, false);

    ImageView profileimage = (ImageView) row.findViewById(R.id.profileimage);
    TextView usernametext = (TextView) row.findViewById(R.id.usernametext);
    TextView datetext = (TextView) row.findViewById(R.id.datetext);
    TextView likestext = (TextView) row.findViewById(R.id.likestext);
    ImageView postimage = (ImageView) row.findViewById(R.id.postimage);
    TextView posttitletext = (TextView) row.findViewById(R.id.posttitletext);
  Picasso.with(context).load(posts.get(position).getImage()).into(postimage);
    Picasso.with(context).load(posts.get(position).getUserimage()).into(profileimage);
    datetext.setText(posts.get(position).getDate());
    usernametext.setText(posts.get(position).getUser());
    likestext.setText(Integer.toString(posts.get(position).getLikes()));
    posttitletext.setText(posts.get(position).getTitle());


    postimage.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view) {

            ArrayAdapter<Post> postArrayAdapter;
            ArrayList<Post> onepostlist= new ArrayList<Post>();
            MainActivity.displayAllPosts=false;

            View parentRow = (View) view.getParent();
            ListView listView1 = (ListView) parentRow.getParent();

            final int position = listView1.getPositionForView(parentRow);

            FragmentTransaction ft = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction();
            FragmentPost post = new FragmentPost();
            ft.replace(R.id.fragmentContainer, post);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ft.addToBackStack("post");
            ft.commit();

        }
    });

    return row;
}
니틴 파텔

우선, custom class의 데이터를 전달할 때마다 해당 클래스를 Parcelable 로 설정하는 것이 좋습니다 (기타 옵션은 Serializable을 사용할 수 있음). 따라서 parcelable 클래스 데이터를 Intentor Bundle함께 쉽게 첨부하고 다음 활동 또는 조각에서 쉽게 가져올 수 있습니다.

따라서 Post 클래스를 아래와 같이 parcelable로 만드 십시오.

public class Post implements Parcelable {
String date;
String user;
String image;
String userImage;
String likes;
String title;

public Post() {
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getUser() {
    return user;
}

public void setUser(String user) {
    this.user = user;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getUserImage() {
    return userImage;
}

public void setUserImage(String userImage) {
    this.userImage = userImage;
}

public String getLikes() {
    return likes;
}

public void setLikes(String likes) {
    this.likes = likes;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public Post(Parcel parcel) {
    date = parcel.readString();
    user = parcel.readString();
    image = parcel.readString();
    userImage = parcel.readString();
    likes = parcel.readString();
    title = parcel.readString();
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int flags) {
    parcel.writeString(date);
    parcel.writeString(user);
    parcel.writeString(image);
    parcel.writeString(userImage);
    parcel.writeString(likes);
    parcel.writeString(title);
}

public static final Parcelable.Creator<Post> CREATOR = new
        Parcelable.Creator<Post>() {
            public Post createFromParcel(Parcel in) {
                return new Post(in);
            }

            public Post[] newArray(int size) {
                return new Post[size];
            }
        };
}

이제를 사용하여 Bundle조각의 추가 / 바꾸기 작업 중에 조각으로 데이터를 보낼 수 있습니다.

onClick라인 아래 어댑터의 코드 아래에서 변경하십시오 final int position = listView1....

    //Attach data using Bundle
    Bundle postBundle = new Bundle();
    postBundle.putParcelable("SELECTED_POST", posts.get(position));

    FragmentTransaction ft = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction();
    FragmentPost post = new FragmentPost();
    post.setArguments(postBundle);              //Add this line to attach data
    ft.replace(R.id.fragmentContainer, post);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.addToBackStack("post");
    ft.commit();

그런 다음 onCreate()아래와 같이 조각 에서 해당 데이터를 포착하고 필요에 따라 사용할 수 있습니다.

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle dataBundle = getArguments();
    Post selectedPost = dataBundle.getParcelable("SELECTED_POST");
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록 항목을 클릭 할 때 자식에서 부모로 데이터를 전달하는 방법

분류에서Dev

Angular의 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 HTML 오류

분류에서Dev

ReactJS : API에서 데이터를 가져온 직후 부모에서 자식 구성 요소로 데이터를 전달할 때 문제가 발생합니다. (기능 구성 요소 만 해당)

분류에서Dev

URL로 전달하지 않고 한 구성 요소에서 다른 구성 요소로 클릭 한 행의 데이터를 전달하는 방법

분류에서Dev

부모 구성 요소에서 버튼을 클릭했을 때 자식 구성 요소에서 부모 구성 요소로 데이터를 전달하는 방법

분류에서Dev

지도를 사용하여 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 Angular ExpressionChangedAfterItHasBeenCheckedError

분류에서Dev

사용자가 제출 한 데이터를 새 Firebase 키로 만들려면 어떻게해야하나요? 제출 버튼을 클릭하여 데이터를 전달할 때만 생성되는 키

분류에서Dev

새 데이터를 가리 키거나 / 클릭 / 스크롤 할 때 이전 데이터를 보여주는 JTable

분류에서Dev

그래프의 새 이미지는 모든 새 이미지를 생성하는 데 시간이 걸리기 때문에 GUI는 클릭 할 때마다 이미지를 업데이트하지 않으므로 GUI는 이전 이미지를 표시합니다.

분류에서Dev

소스 관찰 가능 항목이 새 이벤트를 생성 할 때마다 'n'개의 최신 항목을 목록으로 내보내는 Rx 연산자

분류에서Dev

react Portal-모달 외부를 클릭 할 때 모달을 닫는 방법과 부모 구성 요소 렌더링 모달 내부의 모달에 참조를 할당하는 방법은 무엇입니까?

분류에서Dev

laravel livewire, 클릭으로 ID 또는 데이터를 다른 구성 요소에 전달하는 방법

분류에서Dev

Recyclerview Onclick이 카드보기를 클릭 할 때 특정 데이터를 활동으로 전달

분류에서Dev

새 요소를 추가 할 때 목록보기를 새로 고치는 방법

분류에서Dev

새 구성 요소를 클릭 할 때 각도 유형 오류 수신

분류에서Dev

새로 추가 된 목록 항목을 클릭 할 때 jQuery 클릭 이벤트가 발생하지 않음

분류에서Dev

Angular : 다른 구성 요소에서 전달 된 데이터는 페이지를 다시로드 할 때 정의되지 않습니다.

분류에서Dev

각도 2에서 버튼을 클릭하여 한 구성 요소에서 다른 구성 요소로 데이터를 보내는 방법

분류에서Dev

Typescript 및 클래스 구성 요소 데코레이터를 사용할 때 Vue Router에서 소품을 전달하는 방법

분류에서Dev

React Native (및 Ignite)에서 목록 항목을 클릭 할 때 다른 컨테이너로 이동하는 ListView (탭 내부)를 어떻게 생성합니까?

분류에서Dev

데이터를 다시 전달하는 하위 구성 요소에 데이터 보내기

분류에서Dev

Angular에서`ComponentFactoryResolver`를 사용할 때 다른 구성 요소로 데이터를 전달할 수 없습니다.

분류에서Dev

데이터를 전달할 때 한 조각에서 다른 조각으로 데이터 전달이 작동하지 않음

분류에서Dev

요소를 전경으로 보낼 때 클릭이 발생하지 않습니다.

분류에서Dev

Vue-구성 요소에 전달하는 데이터 값 새로 고침

분류에서Dev

한 요소가 부모 일 때 각 요소를 클릭 할 때 각 기능이 트리거되도록하는 방법은 무엇입니까?

분류에서Dev

.class로 td 내의 요소를 클릭 할 때를 제외하고 전체 테이블 행을 클릭 할 수 있습니다.

분류에서Dev

부모 구성 요소를 클릭하면 자식 구성 요소에서 데이터 가져 오기

분류에서Dev

.bak에서 새 DB로 데이터베이스를 전송할 때 발생하는 문제

Related 관련 기사

  1. 1

    목록 항목을 클릭 할 때 자식에서 부모로 데이터를 전달하는 방법

  2. 2

    Angular의 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 HTML 오류

  3. 3

    ReactJS : API에서 데이터를 가져온 직후 부모에서 자식 구성 요소로 데이터를 전달할 때 문제가 발생합니다. (기능 구성 요소 만 해당)

  4. 4

    URL로 전달하지 않고 한 구성 요소에서 다른 구성 요소로 클릭 한 행의 데이터를 전달하는 방법

  5. 5

    부모 구성 요소에서 버튼을 클릭했을 때 자식 구성 요소에서 부모 구성 요소로 데이터를 전달하는 방법

  6. 6

    지도를 사용하여 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 Angular ExpressionChangedAfterItHasBeenCheckedError

  7. 7

    사용자가 제출 한 데이터를 새 Firebase 키로 만들려면 어떻게해야하나요? 제출 버튼을 클릭하여 데이터를 전달할 때만 생성되는 키

  8. 8

    새 데이터를 가리 키거나 / 클릭 / 스크롤 할 때 이전 데이터를 보여주는 JTable

  9. 9

    그래프의 새 이미지는 모든 새 이미지를 생성하는 데 시간이 걸리기 때문에 GUI는 클릭 할 때마다 이미지를 업데이트하지 않으므로 GUI는 이전 이미지를 표시합니다.

  10. 10

    소스 관찰 가능 항목이 새 이벤트를 생성 할 때마다 'n'개의 최신 항목을 목록으로 내보내는 Rx 연산자

  11. 11

    react Portal-모달 외부를 클릭 할 때 모달을 닫는 방법과 부모 구성 요소 렌더링 모달 내부의 모달에 참조를 할당하는 방법은 무엇입니까?

  12. 12

    laravel livewire, 클릭으로 ID 또는 데이터를 다른 구성 요소에 전달하는 방법

  13. 13

    Recyclerview Onclick이 카드보기를 클릭 할 때 특정 데이터를 활동으로 전달

  14. 14

    새 요소를 추가 할 때 목록보기를 새로 고치는 방법

  15. 15

    새 구성 요소를 클릭 할 때 각도 유형 오류 수신

  16. 16

    새로 추가 된 목록 항목을 클릭 할 때 jQuery 클릭 이벤트가 발생하지 않음

  17. 17

    Angular : 다른 구성 요소에서 전달 된 데이터는 페이지를 다시로드 할 때 정의되지 않습니다.

  18. 18

    각도 2에서 버튼을 클릭하여 한 구성 요소에서 다른 구성 요소로 데이터를 보내는 방법

  19. 19

    Typescript 및 클래스 구성 요소 데코레이터를 사용할 때 Vue Router에서 소품을 전달하는 방법

  20. 20

    React Native (및 Ignite)에서 목록 항목을 클릭 할 때 다른 컨테이너로 이동하는 ListView (탭 내부)를 어떻게 생성합니까?

  21. 21

    데이터를 다시 전달하는 하위 구성 요소에 데이터 보내기

  22. 22

    Angular에서`ComponentFactoryResolver`를 사용할 때 다른 구성 요소로 데이터를 전달할 수 없습니다.

  23. 23

    데이터를 전달할 때 한 조각에서 다른 조각으로 데이터 전달이 작동하지 않음

  24. 24

    요소를 전경으로 보낼 때 클릭이 발생하지 않습니다.

  25. 25

    Vue-구성 요소에 전달하는 데이터 값 새로 고침

  26. 26

    한 요소가 부모 일 때 각 요소를 클릭 할 때 각 기능이 트리거되도록하는 방법은 무엇입니까?

  27. 27

    .class로 td 내의 요소를 클릭 할 때를 제외하고 전체 테이블 행을 클릭 할 수 있습니다.

  28. 28

    부모 구성 요소를 클릭하면 자식 구성 요소에서 데이터 가져 오기

  29. 29

    .bak에서 새 DB로 데이터베이스를 전송할 때 발생하는 문제

뜨겁다태그

보관