我有RecyclerView
装有使用Call<list<model>>
改装进行装载的物品。现在,我想当我单击“回收站视图”的每个项目时,应从不同的api id加载数据。例如:
当我单击第1项时:应加载“ http .... id = 1”
当我单击项目2时:应加载“ http .... id = 2”
以下是我的适配器,用于加载回收视图项(我应该在这里做什么?):
public class WhatsAndroidAdapter extends RecyclerView.Adapter<WhatsAndroidAdapter.CustomViewHolder> {
List<WhatsAndroid.WhatsAndroidModel> WAmdel;
Context context;
public WhatsAndroidAdapter(Context context,List<WhatsAndroid.WhatsAndroidModel> employees) {
this.WAmdel = employees;
this.context=context;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.whatsandroid_item , parent, false);
return new CustomViewHolder(itemView);
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
holder.textView.setText(String.valueOf(position+1)+". ");
holder.employeeName.setText(WAmdel.get(position).getTitle());
}
@Override
public int getItemCount() {
return WAmdel.size();
}
public class CustomViewHolder extends RecyclerView.ViewHolder {
public TextView employeeName;
TextView textView;
public CustomViewHolder(View view) {
super(view);
employeeName = (TextView) view.findViewById(R.id.WA2);
textView=view.findViewById(R.id.WA1);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
}
}}
WhatsAndoid活动:
public class WhatsAndroid extends AppCompatActivity {
private RecyclerView recyclerView;
private WhatsAndroidAdapter WAAdapter;
ProgressDialog progressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.whatsandroid_layout);
progressDialog = new ProgressDialog(WhatsAndroid.this);
progressDialog.setMessage("Loading....");
progressDialog.show();
Toolbar toolbar = (Toolbar) findViewById(R.id. toolbar );
setSupportActionBar( toolbar );
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
WhatsAndroidApiService service = WhatsAndroidApiClient.getRetrofitInstance().create(WhatsAndroidApiService.class);
Call<List<WhatsAndroid.WhatsAndroidModel>> call = service.getWhatsAndroid();
call.enqueue(new Callback<List<WhatsAndroid.WhatsAndroidModel>>() {
@Override
public void onResponse(Call<List<WhatsAndroid.WhatsAndroidModel>> call, Response<List<WhatsAndroid.WhatsAndroidModel>> response) {
progressDialog.dismiss();
generateDataList(response.body());
}
@Override
public void onFailure(Call<List<WhatsAndroid.WhatsAndroidModel>> call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
}
});
}
private void generateDataList(List<WhatsAndroid.WhatsAndroidModel> employeeList) {
recyclerView = findViewById(R.id.WArecycle);
LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
WAAdapter = new WhatsAndroidAdapter(getApplicationContext(),employeeList);
recyclerView.setAdapter(WAAdapter);
}
public class WhatsAndroidModel {
@SerializedName("id")
@Expose
private String id;
@SerializedName("title")
@Expose
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() ==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}}
答案 0 :(得分:1)
在这里更改
public class CustomViewHolder extends RecyclerView.ViewHolder {
public TextView employeeName;
TextView textView;
public CustomViewHolder(View view) {
super(view);
employeeName = (TextView) view.findViewById(R.id.WA2);
textView=view.findViewById(R.id.WA1);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, NextActivity.class);
if(WAmdel.get(getAdapterPosition()==0)
{
intent.putExtra("url","http://mapi.trycatchtech.com/v1/android_tutorials/single_tutorial?tutorial_id=1");
}
else if(WAmdel.get(getAdapterPosition()==1)
{
intent.putExtra("url","http://mapi.trycatchtech.com/v1/android_tutorials/single_tutorial?tutorial_id=2");
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
}
现在在您的NextActivity中获取这样的网址
String url = getIntent().getStringExtra("url");
答案 1 :(得分:0)
public interface ExampleService {
String BASE_URL = "https://api.demo.com/";
@GET("Login") //i.e https://api.demo.com/Login?
Call<Products> getUserDetails(@Query("email") String emailID, @Query("password") String password)
}
它将被称为这种方式。考虑到您已经完成了其余代码。
Call<Results> call = service.getUserDetails("abc@gmail.com", "Password@123");
例如,当返回查询时,它将看起来像这样。
https://api.demo.com/Login?email=abc@gmail.com&password=Password@123