我真的不知道出了什么问题,我一直在努力找出问题所在.我通常会避免发表关于它的帖子,但无论我搜索什么,我似乎都无法在谷歌上找到任何相关的问题.我甚至找不到一个人经历过这个问题.
当我第一次创建RecclerView和适配器时,它们工作得很好(手动实现每个对象,如下所示).我实际上没有更改任何内容,但是当我try 将其编程为返回一个ArrayList(从SQLite数据库)并将该ArrayList传递到适配器时,它停止了工作.那么,回到手动创建对象和ArrayList的过程中,它仍然不起作用吗?
任何帮助都将非常、非常感激:)
My RecyclerView adapter:个
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder>{
Context context;
ArrayList<myUser> listings;
public RecyclerViewAdapter(Context context, ArrayList<myUser> arrayList) {
this.context = context;
this.listings = arrayList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.recyclerview_row, parent, false);
return new MyViewHolder(view);
}
/**
* This basically controls the customisation of each item in the RecyclerView
* @param holder The ViewHolder which should be updated to represent the contents of the
* item at the given position in the data set.
* @param position The position of the item within the adapter's data set.
*/
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
System.out.println(position);
myUser item = listings.get(position);
holder.teamName.setText(item.getUsername());
System.out.println(item.getUsername());
//holder.teamLevel.setText(item.getTeamLevel());
//holder.requiredRole.setText(item.getRoleRequired());
}
/**
* This gets the length of your dataset to determine how many items will be in the RecyclerView
* So the length of the ArrayList in this case.
* @return
*/
@Override
public int getItemCount() {
return listings.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView teamName, teamLevel, requiredRole;
Button btnApply;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
teamName = itemView.findViewById(R.id.tvTeamName);
teamLevel = itemView.findViewById(R.id.tvTeamLevel);
requiredRole = itemView.findViewById(R.id.tvRoleRequired);
}
}
}
myUser class:个
public class myUser {
private static int id;
private static String username;
private static String nationality;
private static String role;
private static boolean teamStatus;
private static int teamID;
private static String teamName;
public myUser(int id, String username, @Nullable String nationality, @Nullable String role, @Nullable int teamID, @Nullable String teamName) {
this.id = id;
this.username = username;
this.nationality = nationality;
this.role = role;
this.teamID = teamID;
this.teamName = teamName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public static String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public static String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public boolean isTeamStatus() {
return teamStatus;
}
public void setTeamStatus(boolean teamStatus) {
this.teamStatus = teamStatus;
}
public static int getTeamID() { return teamID; }
public static void setTeamID(int teamID) { myUser.teamID = teamID; }
public static String getTeamName() { return teamName; }
public static void setTeamName(String teamName) { myUser.teamName = teamName; }
}
The activity code:个
myUser user1 = new myUser(12, "Sid", null, null, -1, null);
myUser user2 = new myUser(13, "George", null, null, -1, null);
myUser user3 = new myUser(14, "Hello", null, null, -1, null);
ArrayList<myUser> newArray = new ArrayList<>();
newArray.add(user1);
newArray.add(user2);
newArray.add(user3);
/* Recycler View */
RecyclerView rv = findViewById(R.id.recyclerView_teamFind);
rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, newArray);
rv.setAdapter(adapter);
The console output(来自onBindViewHolder内的System.out.println语句):
I/System.out: 0
I/System.out: Hello
I/System.out: 1
I/System.out: Hello
I/System.out: 2
I/System.out: Hello
And the final result:个
我完全不知道出了什么问题,它起作用了.现在不是了.