如何将文本视图数据从回收站视图转移到另一个活动?

时间:2017-06-15 13:32:29

标签: android android-recyclerview

我想将文本视图数据从回收站视图转移到另一个活动。我想采取 workshop_name TextView to Otheractivity。

这是我的代码。

MechSearchActivity.java

public class MechSearchActivity extends AppCompatActivity {
List<SearchResponse.WorkshopDataBean> workshopList;
RecyclerView recyclerView;
  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search_mec);

recyclerView = (RecyclerView) findViewById(R.id.rv_workshoplist);

callSearchApi();

onItemClick();
 }

   public void callSearchApi() {


    ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
    Call<SearchResponse> call = apiService.getSearchData( "workshop_name","image", "street",  "locality", "city"); // single search for all the values
    call.enqueue(new Callback<SearchResponse>() {

        @Override
        public void onResponse(Call<SearchResponse> call, retrofit2.Response<SearchResponse> response) {
            SearchResponse searchResponse = response.body();
           workshopList = searchResponse.getWorkshopData();
            MechanicRecyclerAdapter adapter = new MechanicRecyclerAdapter(MechSearchActivity.this, workshopList);
            recyclerView.setAdapter(adapter);
            LinearLayoutManager mGridLayoutManager = new LinearLayoutManager(MechSearchActivity.this); // (Context context, int spanCount)
            recyclerView.setLayoutManager(mGridLayoutManager);

        }

        @Override
        public void onFailure(Call<SearchResponse> call, Throwable t) {


      }
    });
}
private void onItemClick() {

    final GestureDetector mGestureDetector = new GestureDetector(MechSearchActivity.this, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
    });

    recyclerView_ws.addOnItemTouchListener(new 
    RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
            View child = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());

            if (child != null && mGestureDetector.onTouchEvent(motionEvent)) {
                int position = recyclerView.getChildPosition(child);
                String workshop_name = workshopList.get(position).getWorkshop_name();

                Intent intent = new Intent(MechSearchActivity.this, OtherActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                intent.putExtra("workshop_name", workshop_name);
                startActivity(intent);
                return true;

            }

            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {

        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });
}
}

MechRecyclerAdapter.java

 public class MechanicRecyclerAdapter extends RecyclerView.Adapter<MechanicRecyclerAdapter.MyViewHolder> {

private static final String TAG = MechanicRecyclerAdapter.class.getSimpleName();
Context mContext;
private LayoutInflater inflater;
String vehicle_type;

List<SearchResponse.WorkshopDataBean> workshopList;

public MechanicRecyclerAdapter(Context context,  List<SearchResponse.WorkshopDataBean> workshopList) {
    inflater = LayoutInflater.from(context);
    this.workshopList = workshopList;
    mContext = context;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.single_workshop, parent, false);
    MyViewHolder holder = new MyViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    SearchResponse.WorkshopDataBean current = workshopList.get(position);
    String ws_name = workshopList.get(position).getWorkshop_name();

     holder.tv_workshopname.setText(ws_name);


}


@Override
public int getItemCount() {
    return workshopList.size();
}


class MyViewHolder extends RecyclerView.ViewHolder  {
    SearchResponse.WorkshopDataBean current;
    TextView tv_workshopname;

     public MyViewHolder(View itemView) {
        super(itemView);
        tv_workshopname = (TextView) itemView.findViewById(workshop_name);
       }
      }
      }

OtherActivity.java

public class OtherActivity extends AppCompatActivity {

TextView SingleWorkshopName;
String workshop_name;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.otheractivity);
    SingleWorkshopName=(TextView)findViewById(R.id.single_workshop_name);
    Bundle extras = getIntent().getExtras();
    workshop_name = extras.getString("workshop_name", null);
}
}

1 个答案:

答案 0 :(得分:5)

为此,您需要在MechanicRecyclerAdapter

中创建一个界面
 public interface OnListItemClick {
    void onItemClick(int position);
}
onBindViewHolder()中的

使用以下代码

指定您的点击次数
viewHolder.main_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onListItemClick.onItemClick(position);
            }
        });

在您MechSearchActivity中实现此界面您将在活动中使用onItemClick()方法使用位置获取行的正确名称并使用intent.putExtra("workshop_name", workshop_name);传递给其他活动