我热衷于显示我的数据。它包含带有CardView的RecyclerView。我正在从Web服务获取价值。但是在CardView中仅显示其中的2个。当我单击CardView时,它将开始新的活动以了解详细信息。在本活动中,我想用值填充组件。我需要帮助。我该怎么办?我应该使用查询再次调用Web服务,还是在Android中有任何可能的方法?
我试图将某些变量设置为静态,但是我的头脑很困惑,我不知道如何执行此操作。顺便说一句,如果我输入的主题有误,请重定向到有效主题。
这是我从Web服务获取价值的代码
public void CallService(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://10.0.3.2:45455/")
.addConverterFactory(GsonConverterFactory.create())
.build();
JsonPlaceholderAPI jsonPlaceholderAPI = retrofit.create(JsonPlaceholderAPI.class);
Call<List<Records>> call = jsonPlaceholderAPI.records();
call.enqueue(new Callback<List<Records>>() {
@Override
public void onResponse(Call<List<Records>> call, Response<List<Records>> response) {
if(!response.isSuccessful()){
Log.v("CODE : " , String.valueOf(response.code()));
return;
}
InitData(response.body());
}
@Override
public void onFailure(Call<List<Records>> call, Throwable t) {
Log.v("ERROR : " , t.getMessage());
}
});
这里是InitData For将值传递给RecyclerView。
public void InitData(List<Records> body){
List<Records> record;
record = body;
for(Records records : record) {
arrayList.add(new RecyclerLayout(" KODU : " + records.getKODU() , "AÇIKLAMA : " + records.getACIKLAMA()));
adapter = new RecyclerAdapter(arrayList);
}
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
这里是重定向到详细活动代码
@Override
public void onBindViewHolder(final MyViewHolder holder , final int position) {
holder.kod.setText(arrayList.get(position).getKodu());
holder.aciklama.setText(arrayList.get(position).getAciklama());
holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = holder.view.getContext();
// System.out.println("CLICKED " +position);
Intent intent = new Intent(context, KayitDetay.class);
context.startActivity(intent);
}
});
这是我没有Getters和Setters的POJO(他们在其中,但我没有在这里粘贴它)
@SerializedName("KODU")
@Expose
private String kODU;
@SerializedName("ACIKLAMA")
@Expose
private String aCIKLAMA;
@SerializedName("KAPALI_FL")
@Expose
private boolean kAPALIFL;
@SerializedName("TARIH")
@Expose
private String tARIH;
@SerializedName("TUTAR")
@Expose
private double tUTAR;
@SerializedName("DURUM")
@Expose
private int dURUM;
我想查看我在其他活动中的价值观。
答案 0 :(得分:2)
您可以使用Intent表单适配器将值传递给活动。
Intent intent = new Intent(context, KayitDetay.class);
intent.putEXtra("Key",arrayList.get(position).getAciklama())
context.startActivity(intent);
您可以使用以下代码在KayitDetay Activity中检索这些值: //获得一个字符串 字符串值= intent.getStringEXtra(“ Key”)
答案 1 :(得分:1)
替换此:
Intent intent = new Intent(context, KayitDetay.class);
context.startActivity(intent);
与
Intent intent = new Intent(context, KayitDetay.class);
intent.putExtra("key",arrayList.get(position));
context.startActivity(intent);
然后在详细信息屏幕上,借助捆绑软件获取密钥
答案 2 :(得分:0)
创建一个侦听器接口,然后让您的Activity实现它。
public interface OnItemClickListener {
void onItemClick(Records record);
}
在您的活动中:
public class MainActivity implements OnItemClickListener {
@Override
public void onItemClick(Records record) {
// handle Item click data
// pass record data to details activity here
}
}
在适配器中:
// declare this globally
public OnItemClickListener onItemClickListener ;
// ViewHolder
@Override
public void onBindViewHolder(VideoHolder holder, int position) {
holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener .onItemClick(arrayList.get(position));
}
});
}