java - pro - recyclerViewItem의 일부 '추가로'이전 활동으로 돌아 가기




windowbuilder pro eclipse oxygen (3)

Recycler보기에서 Item 클릭에 대한 데이터 이전 활동을 전달하고 텍스트 편집에 표시하려고합니다.

이것은 listview에서 이전 활동으로 데이터를 전달하는 데 사용한 코드입니다.

나는 Recyclerview와 같은 일을하고 싶다.

// 두 번째 활동 호출

public static final int REQUEST_CODE = 100;
Intent dateintent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(dateintent, REQUEST_CODE);

// listview의 onClick은 이전 활동으로 데이터를 다시 전달합니다.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                TextView txt = (TextView) view.findViewById(R.id.textView);
                String str = txt.getText().toString();

                Intent intent = new Intent();
                intent.putExtra("data",str);
                setResult(RESULT_OK,intent);
                finish();

            }

});

// 데이터를 가져온 후 첫 번째 활동 입력란에 데이터를 표시합니다.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            String data= data.getStringExtra("data");
            if (data!= null) {
                edittext.setText(data);
            }
        }
    }

}


RecyclerView에는 이전 버전 인 ListView처럼 setOnItemClickListener가 없습니다. 그러나 그것이 우리가하고 싶은 일을하는 것을 막아서는 안됩니다. 그래서 우리는 바퀴를 다시 만들고 RecyclerView를위한 고유 한 OnItemClickListener를 만듭니다. 다음은 단계별 가이드입니다.

  1. onItemClick이라는 빈 메서드를 사용하여 OnItemClickListener.java라는 새 파일을 만들어 OnItemClickListener라는 인터페이스를 만듭니다 .

    public interface OnItemClickListener {
         public void onItemClick(View view , int position);
     }
  2. 어댑터에 정적 변수 만들기

    static OnItemClickListener mItemClickListener;
  3. onItemClick 메서드를 호출 하여 사용자 정의 ViewHolder의 onClickListener를 설정합니다.

    @Override
    public void onClick(View view) {
       mItemClickListener.onItemClick(view, getPosition());
    }
  4. 어댑터 클래스에 SetOnItemClickListener라는 public 메서드를 만듭니다.

    public void SetOnItemClickListener(final OnItemClickListener mItemClickListener)
    {
    this.mItemClickListener = mItemClickListener;
    }
  5. 사용자 지정 RecyclerView 어댑터의 SetOnItemClickListener

    ((NameOfYourAdapter) mAdapter).SetOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(View view, int position) {
                    if(view != null)
                    {
            TextView txt = (TextView) view.findViewById(R.id.textView);
            String str = txt.getText().toString();
                        Intent intent = new Intent();
                        intent.putExtra("data",str);
                        setResult(RESULT_OK, intent);
                        //close this Activity...
                        finish();
                    }
                }
            });

그렇게해야합니다. 질문이 있으시면 언제든지 물어보십시오!


먼저이 인터페이스를 작성하십시오.

public interface RunnableValue {

public void run(Object obj);
}

2.이 MainActivity 추가

 RunnableValue run=new RunnableValue() {
        @Override
        public Bundle run(Object obj) {

             String str = obj.toString();

            Intent intent = new Intent();
            intent.putExtra("data",str);
            setResult(RESULT_OK,intent);
            finish();
          }
    };
    mAdapter = new SearchAdapter(dataSet,run);
  1. 이 RecyclerView 어댑터

    public SearchAdapter(List<String>  dataSet,RunnableValue runnableValue) {
        mDataSet = dataSet;
        this.runnableValue=runnableValue;
    }
    public static class SearchHolder extends RecyclerView.ViewHolder {
    private final TextView textView;
    
    public SearchHolder(View v) {
        super(v);
    
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                runnableValue.run(getTextView().toString());
            }
        });
        textView = (TextView) v.findViewById(R.id.txtSearchItem);
    }
    
    public TextView getTextView() {
        return textView;
    }

    }


여기 야곱의 해결책을 따르십시오. 그러면 RecyclerView에 대한 리스너가 추가됩니다. 그런 다음 ListView에서 수행 한 것과 동일하게 수행하십시오.





android-recyclerview