在回收器视图中从firebase数据库中检索了数据,但是现在我无法设置onclicklistner并转到另一个活动,并将值传递给另一个活动。我已经尝试过从适配器设置onclcklistner,但是它只是转到另一个活动,即如何获取项目视图的位置并仅在新活动中发送它们的记录。
主要活动代码
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Category, CategoryViewHolder>adapter;
FirebaseDatabase database;
DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_recycler_view);
database = FirebaseDatabase.getInstance();
reference=database.getReference("Category");
recyclerView =(RecyclerView)findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
layoutManager= new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
showlist();
}
private void showlist()
{
FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<Category>()
.setQuery(reference,Category.class).build();
adapter= new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull CategoryViewHolder categoryViewHolder, int i, @NonNull Category category) {
categoryViewHolder.textusername.setText(category.getUserName());
categoryViewHolder.textusesurname.setText(category.getUserSurname());
categoryViewHolder.textusernumber.setText(category.getUserNumber());
}
@NonNull
@Override
public CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);
return new CategoryViewHolder(view);
}
};
adapter.startListening();
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}
}
Category.java代码
package com.example.fantasyguru.Model;
public class Category {
private String userName;
private String userNumber;
private String userSurname;
public Category() {
}
public Category(String userName, String userNumber, String userSurname) {
this.userName = userName;
this.userNumber = userNumber;
this.userSurname = userSurname;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNumber() {
return userNumber;
}
public void setUserNumber(String userNumber) {
this.userNumber = userNumber;
}
public String getUserSurname() {
return userSurname;
}
public void setUserSurname(String userSurname) {
this.userSurname = userSurname;
}
}
CategoryViewHolder的代码
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.fantasyguru.R;
public class CategoryViewHolder extends RecyclerView.ViewHolder{
public TextView textusername;
public TextView textusesurname;
public TextView textusernumber;
public CategoryViewHolder(@NonNull View itemView) {
super(itemView);
textusername=(TextView)itemView.findViewById(R.id.textView_username);
textusesurname=(TextView)itemView.findViewById(R.id.textView_usersurname);
textusernumber=(TextView)itemView.findViewById(R.id.textView_usernumber);
}
}
答案 0 :(得分:0)
在onBindViewHolder
中执行此操作:
adapter= new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull CategoryViewHolder categoryViewHolder, int i, @NonNull Category category) {
categoryViewHolder.textusername.setText(category.getUserName());
categoryViewHolder.textusesurname.setText(category.getUserSurname());
categoryViewHolder.textusernumber.setText(category.getUserNumber());
//click item
categoryViewHolder.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this , YourOtherActiviyName.class);
intent.putExtra("user_name" , category.getUserName());
intent.putExtra("user_sur_name" , category.getUserSurname());
intent.putExtra("user_number" , category.getUserNumber());
getApplicationContext().startActivity(intent);
}
});
}
在YourOtherActiviyName
//in onCreate
Intent intent = getIntent();
//these are the passed values
String userName = intent.getStringExtra("user_name");
String userName = intent.getStringExtra("user_sur_name");
String userName = intent.getStringExtra("user_number");
更新:
代替此行:
getApplicationContext().startActivity(intent);
尝试一下:
MainActivity.this.startActivity(intent);