在ViewHolder内部类

时间:2018-04-28 11:26:37

标签: java android android-recyclerview

我的申请涉及通过检查门跟踪车辆运动。在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 );

请建议如何解决问题以及条款的设计。

1 个答案:

答案 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