2017-04-23 65 views
-3

任何人都可以檢查是否有錯誤。這裏是我的代碼,如果代碼中有任何錯誤,請告訴我?我不知道如何修復代碼Search.java。回收站錯誤

我RecyclerItemClickListener.java

public interface RecyclerItemClickListener { 
void onItemClick(int position); 
} 

我的適配器HierAdapter.java

public class HireAdapter extends RecyclerView.Adapter<HireAdapter.ViewHolder>{ 


private ArrayList<HireItem> TeacherItemList; 

private Context context; 
private RecyclerItemClickListener itemClickListener; 

public HireAdapter(Context c, ArrayList<HireItem> teacherItemList, RecyclerItemClickListener listener) { 
    TeacherItemList = teacherItemList; 
    context = c; 
    itemClickListener = listener; 
} 

public static class ViewHolder extends RecyclerView.ViewHolder{ 

    public final TextView nameText, subjectText,levelText ,cityText; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     nameText = (TextView)itemView.findViewById(R.id.result_name); 
     subjectText = (TextView)itemView.findViewById(R.id.result_subject); 
     levelText = (TextView)itemView.findViewById(R.id.result_level); 
     cityText = (TextView)itemView.findViewById(R.id.result_city); 

    } 
} 


@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_teachers,parent,false); 
    final ViewHolder viewHolder = new ViewHolder(rowView); 
    rowView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      itemClickListener.onItemClick(viewHolder.getLayoutPosition()); 
     } 
    }); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 

    holder.nameText.setText(TeacherItemList.get(position).getResult_name()); 
    holder.subjectText.setText(TeacherItemList.get(position).getResult_subject()); 
    holder.levelText.setText(TeacherItemList.get(position).getResult_level()); 
    holder.cityText.setText(TeacherItemList.get(position).getResult_city()); 

    //Here it is simply write onItemClick listener here 
    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Context context = v.getContext(); 
      Intent intent = new Intent(context, ProfileTeaAdapter.class); 

      context.startActivity(intent); 
     } 
    }); 


} 


@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
} 

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

這裏Search.java

,我在每一個錯誤寫筆記。因爲我不知道如何糾正一些代碼與HireAdapter和RecyclerItemClickListener一起工作,任何人都可以解決這個錯誤?

public class Search extends Fragment implements RecyclerItemClickListener { 

private Context context; 
private RecyclerView recyclerView; 
private DatabaseReference databaseReference; 
private FirebaseAuth firebaseAuth; 
private List<HireItem> hireItem = new ArrayList<>(); 
HireAdapter mAdapter; 
ImageView bt_search; 
ProgressDialog progressDialog; 
Spinner spinner_sort; 

String key = "req_skill1"; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_search,container,false); 

    //Getting FireBase Instance 
    firebaseAuth = FirebaseAuth.getInstance(); 
    databaseReference = FirebaseDatabase.getInstance().getReference("teachers"); 

    //Getting id of Views 
    RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rv_places); 
    recyclerView.setAdapter(mAdapter); 


    // 
    bt_search = (ImageView)view.findViewById(R.id.bt_search); 
    spinner_sort = (Spinner)view.findViewById(R.id.spinner_sort); 
    setupSpinner(); 

    List<HireItem> hireItem = new ArrayList<>(); 
    mAdapter = new HireAdapter(getContext(),R.layout.list_item_teachers,hireItem); // error at (getContext(),R.layout.list_item_teachers,hireItem) 

    bt_search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(mAdapter != null){ 
       mAdapter.clear(); // error at .clear(); 
      } 

      progressDialog = new ProgressDialog(getContext()); 
      progressDialog.setMessage("Searching Teachers"); 
      progressDialog.show(); 


      FirebaseDatabase.getInstance().getReference("teachers").orderByChild("subject").startAt(key).endAt(key + "~") 
        .addChildEventListener(new ChildEventListener() { 
         @Override 
         public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
          Teachers child = dataSnapshot.getValue(Teachers.class); 
          HireItem hireItem = new HireItem(child.teaname, child.city, child.subject, child.level, child.sex,child.mobile, child.qualification, child.skill1, child.experince, child.salary,child.age); 
          mAdapter.add(hireItem); // error at .add 
          progressDialog.dismiss(); 

          if(mAdapter == null){ 
           Toast.makeText(getContext(), "No Match Found", Toast.LENGTH_SHORT).show(); 
          } 
         } 

         @Override 
         public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

         } 

         @Override 
         public void onChildRemoved(DataSnapshot dataSnapshot) { 

         } 
         @Override 
         public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

         } 

         @Override 
         public void onCancelled(DatabaseError databaseError) { 

         } 
        }); 

      if(mAdapter == null){ 
       Toast.makeText(getContext(), "No Match Found", Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       recyclerView.setAdapter(mAdapter); // error at recyclerView 

      } 

     } 
    }); 
    return view; 
} 
private void setupSpinner(){ 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getContext(),R.array.array_teacher_sort, 
      android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
    spinner_sort.setAdapter(adapter); 
    spinner_sort.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      key = (String)adapterView.getItemAtPosition(i); 
      if(key.equals(getString(R.string.sort_A))){ 
       key = "Math"; 
      }else if(key.equals(getString(R.string.sort_AA))){ 
       key = "computer"; 
      } 
      else if(key.equals(getString(R.string.sort_AB))){ 
       key = "Biology"; 
      } 

      else if(key.equals(getString(R.string.sort_AD))){ 
       key = "Physics"; 
      } 
      else if(key.equals(getString(R.string.sort_AXX))){ 
       key = "Holy Quran"; 
      } 
      else if(key.equals(getString(R.string.sort_AZ))){ 
       key = "Chysics"; 
      } 
      else if(key.equals(getString(R.string.sort_AS))){ 
       key = "English"; 
      } 
      else if(key.equals(getString(R.string.sort_AQ))){ 
       key = "Arabic"; 
      } 
      else if(key.equals(getString(R.string.sort_ADD))){ 
       key = "Science"; 
      } 
      else if(key.equals(getString(R.string.sort_AE))){ 
       key = "History"; 
      } 
      else if(key.equals(getString(R.string.sort_AW))){ 
       key = "Geograpghy"; 
      } 
      else if(key.equals(getString(R.string.sort_AR))){ 
       key = "Art education"; 
      } 
      else if(key.equals(getString(R.string.sort_AT))){ 
       key = "Family education"; 
      } 
      else if(key.equals(getString(R.string.sort_aae))){ 
       key = "Religion"; 
      } 

     } 
     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
     } 

    }); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mAdapter.clear(); // error at .clear(); 
} 

@Override 
public void onItemClick(int position) { 

} } 
+0

_什麼error_?你有堆棧跟蹤嗎? –

+0

你有沒有試過運行這段代碼? – CodeCameo

+0

執行此語句時'recyclerView.setAdapter(mAdapter);''mAdapter'爲'null'。 – Titus

回答

0
@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_teachers,parent,false); 
    final ViewHolder viewHolder = new ViewHolder(rowView); 
    rowView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      itemClickListener.onItemClick(viewHolder.getLayoutPosition()); 
     } 
    }); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 
    holder.nameText.setText(TeacherItemList.get(position).getResult_name()); 
    holder.subjectText.setText(TeacherItemList.get(position).getResult_subject()); 
    holder.levelText.setText(TeacherItemList.get(position).getResult_level()); 
    holder.cityText.setText(TeacherItemList.get(position).getResult_city()); 

    //Here it is simply write onItemClick listener here 
    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Context context = v.getContext(); 
      Intent intent = new Intent(context, ProfileTeaAdapter.class); 

      context.startActivity(intent); 
     } 
    }); 
} 

在這裏,你是在同一個視圖中設置onClickListner兩次。設置在onBindViewHolder中的Listener將覆蓋onCreateViewHolder方法中設置的Listner

相關問題