2017-06-15 68 views
0

我想將回收站視圖中的textview數據轉換爲另一個活動。我想將 workshop_name TextView轉換爲Otheractivity。如何將textview數據從回收站視圖轉移到另一個活動?

這是我的代碼。

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); 
} 
} 
+0

請檢查你在「workshop_name」得到正確的名稱 –

+0

嘗試使用'getIntent()getStringExtra(「workshop_name」,NULL);'再加上你可以通過添加監聽器實現這個'MyViewHolder' –

+0

如果下面的答案正在工作,那麼你可以對它投票 –

回答

4

對於您需要在您的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);

相關問題