我的申请涉及通过检查门跟踪车辆运动。在NavigationView中单击menuitem后,在onNavigationItemSelected方法上传递门ID: -
case R.id.gate_two:
Intent intent2 = new Intent(getApplicationContext(), VehicleActivity.class);
intent2.putExtra(VehicleActivity.EXTRA_POSITION, 2);
startActivity(intent2);
finish();
break;
将门ID传递给VehicleFragment,并按以下方式进行检索:
public class VehicleFragment extends Fragment {
private int gate;
private static String passvehicle_url = "http://192.168.123.123:8080/test/pass_vehicle.php";
private static String vehicle_url = "http://192.168.123.123:8080/test/track_vehicle.php";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RecyclerView recyclerView = (RecyclerView) inflater.inflate(
R.layout.recycler_view, container, false);
gate = getArguments().getInt("gate");
ContentAdapter adapter = new ContentAdapter(recyclerView.getContext(),this);
recyclerView.setAdapter(adapter);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return recyclerView;
}
我通过在构造函数中传递VehicleFragment对象来访问ContentAdapter中的门ID:
public static class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> {
private int LENGTH=1 ;
private int gate_id=0 ;
private final String[] vehicles ;
private final String[] vehicle_type ;
VehicleFragment vf;
public ContentAdapter(Context context, VehicleFragment vf) {
this.vf = vf;
gate_id = vf.gate;
HttpURLConnection c = null;
try {
URL url = new URL(vehicle_url);
现在我需要访问ViewHolder静态内部类中的门ID,这是我无法做到的。单击通行按钮
时,车辆将通过大门public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView vehicles;
public TextView vehicle_type;
public Button pass;
public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
super(inflater.inflate(R.layout.vehicle_status, parent, false));
vehicles = (TextView) itemView.findViewById(R.id.vehicle_no);
vehicle_type = (TextView) itemView.findViewById(R.id.vehicle_type);
pass = (Button) itemView.findViewById(R.id.pass_vehicle);
pass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
try {
URL url = new URL(passvehicle_url);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoInput(true);
con.setDoOutput(true);
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("timecard_no", timecard_no.getText().toString())
.appendQueryParameter("gate_id", id will be passed here );
请建议如何解决问题以及条款的设计。
答案 0 :(得分:1)
从类ViewHolder
public static class ViewHolder extends RecyclerView.ViewHolder
到
public class ViewHolder extends RecyclerView.ViewHolder
否则将gate_id更改为静态
private static int gate_id=0 ;
然后你可以直接访问gate_id