[英]Why is it the skipping layout in RecyclerView?
我不斷收到E / RecyclerView:未連接適配器; 跳過布局。 我嘗試過onStop()和onStart()方法。 我嘗試重新組織該方法的結構,但仍然沒有運氣。 我已經按照https://firebaseopensource.com/projects/firebase/firebaseui-android/database/readme/上的說明進行操作,但是我無法弄清楚。
package mrcof.code.senior_tech_support_app;
import android.content.Context;
import android.media.Image;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import static mrcof.code.senior_tech_support_app.R.id.result_list;
public class TV extends AppCompatActivity {
private EditText mSearchField;
private ImageButton mSearchBtn;
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
private FirebaseRecyclerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_tv);
mUserDatabase = FirebaseDatabase.getInstance().getReference("TV"); // TV in Database
mSearchField = (EditText) findViewById(R.id.search_field);
mSearchBtn = (ImageButton) findViewById(R.id.search_btn);
mSearchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String searchText = mSearchField.getText().toString();
firebaseUserSearch(searchText); //Our own firebase usersearch
}
});
}
private void firebaseUserSearch(String searchText) {
Toast.makeText(TV.this, "Started Search", Toast.LENGTH_LONG).show();
Query firebaseSearchQuery = mUserDatabase.orderByChild("Brand").startAt(searchText).endAt(searchText + "\uf8ff");
/*Query firebaseSearchQuery = FirebaseDatabase.getInstance()
.getReference()
.child("Brand")
.limitToLast(6).startAt(searchText).endAt(searchText + "\uf8ff");*/
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>().setQuery(firebaseSearchQuery, Users.class).build();
adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
return new UsersViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setDetails(getApplicationContext(), model.getBrand(), model.getImage());
}
};
mResultList = (RecyclerView) findViewById(result_list);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(this));
mResultList.setAdapter(adapter);
}
// View Holder Class
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String brandd, String brandImage){
TextView brand = (TextView) mView.findViewById(R.id.name_text);
ImageView brand_image = (ImageView) mView.findViewById(R.id.brandd_image);
brand.setText(brandd);
Glide.with(ctx).load(brandImage).into(brand_image);
}
}
}
我不斷收到E / RecyclerView:未連接適配器; 跳過布局。 我嘗試過onStop()和onStart()方法。 我嘗試重新組織該方法的結構,但仍然沒有運氣。 我已經按照https://firebaseopensource.com/projects/firebase/firebaseui-android/database/readme/上的說明進行操作,但是我無法弄清楚。
package mrcof.code.senior_tech_support_app;
import android.content.Context;
import android.media.Image;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import static mrcof.code.senior_tech_support_app.R.id.result_list;
public class TV extends AppCompatActivity {
private EditText mSearchField;
private ImageButton mSearchBtn;
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
private FirebaseRecyclerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_tv);
mUserDatabase = FirebaseDatabase.getInstance().getReference("TV"); // TV in Database
mSearchField = (EditText) findViewById(R.id.search_field);
mSearchBtn = (ImageButton) findViewById(R.id.search_btn);
mSearchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String searchText = mSearchField.getText().toString();
firebaseUserSearch(searchText); //Our own firebase usersearch
}
});
}
private void firebaseUserSearch(String searchText) {
Toast.makeText(TV.this, "Started Search", Toast.LENGTH_LONG).show();
Query firebaseSearchQuery = mUserDatabase.orderByChild("Brand").startAt(searchText).endAt(searchText + "\uf8ff");
/*Query firebaseSearchQuery = FirebaseDatabase.getInstance()
.getReference()
.child("Brand")
.limitToLast(6).startAt(searchText).endAt(searchText + "\uf8ff");*/
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>().setQuery(firebaseSearchQuery, Users.class).build();
adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
return new UsersViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setDetails(getApplicationContext(), model.getBrand(), model.getImage());
}
};
mResultList = (RecyclerView) findViewById(result_list);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(this));
mResultList.setAdapter(adapter);
}
// View Holder Class
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String brandd, String brandImage){
TextView brand = (TextView) mView.findViewById(R.id.name_text);
ImageView brand_image = (ImageView) mView.findViewById(R.id.brandd_image);
brand.setText(brandd);
Glide.with(ctx).load(brandImage).into(brand_image);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.