با سلام خدمت استاد محترم و دوستان عزیز
من طبق آموزش اطلاعات رو از api سایتم گرفتم و داخل recycler view نمایش دادم...
حالا میخوام وقتی رو هر آیتم کلیک شد id اون آیتمی که انتخاب شده رو به یک فرگمنت یا activiy دیگه ببره تا اونجا مثلا محتوای کامل مقاله یا محصول اون id رو نمایش بده
من تو کدها هر جا از intent یا fragment استفاده میکنم تو اجرای کد به مشکل میخورم...تو دیباگ هم چیزی نشون نمیده...یعنی id درست دریافت میشه ولی نه fragmenttransaction و نه intetn انجام نمیشه و Force close میده
ممنون میشم راهنمایی کنید که چطور میشه این کار رو انجام داد؟!
این کدهای بخش recycler view
package com.academyresane.myapplication;
import android.content.Intent;
import android.os.Build;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import java.util.List;
public class PostListAdapter extends RecyclerView.Adapter<PostListAdapter.PostListViewHolder> {
private List<Post> posts;
public PostListAdapter(List<Post> posts) {
this.posts = posts;
}
@NonNull
@Override
public PostListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new PostListViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post,parent,false));
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onBindViewHolder(@NonNull PostListViewHolder holder, int position) {
holder.bind(posts.get(position));
}
@Override
public int getItemCount() {
return posts.size();
}
public class PostListViewHolder extends RecyclerView.ViewHolder{
private TextView titlePost;
private TextView exceptPost;
private ImageView thumbnailPost;
public PostListViewHolder(@NonNull View itemView) {
super(itemView);
titlePost=itemView.findViewById(R.id.titlePost);
exceptPost=itemView.findViewById(R.id.excerptPost);
thumbnailPost =itemView.findViewById(R.id.postThumbnail);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void bind(final Post post){
titlePost.setText(post.getTitle().toString());
exceptPost.setText(Html.fromHtml(post.getContent()));
thumbnailPost.setClipToOutline(true);
Picasso.get().load(post.getImgURl().toString()).into(thumbnailPost);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int idpost = post.getIdPost();
MainActivity mainActivity=new MainActivity();
Intent intent = new Intent(v.getContext(),contentActivity.class);
mainActivity.startActivity(intent);
}
});
}
}
}
این هم بخش mainActivity که از volly استفاده کردم
package com.academyresane.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.text.Html;
import android.text.Layout;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.wrapperMain,new progressFragment());
fragmentTransaction.commit();
StringRequest stringRequest = new StringRequest(Request.Method.GET,
"https://hamyarezist.ir/wp-json/wp/v2/posts?_embed",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
fragmentTransaction.remove(new progressFragment());
ConstraintLayout progress = findViewById(R.id.conteinerProgress);
progress.removeAllViews();
try {
JSONArray jsonArray = new JSONArray(response);
List<Post> posts = new ArrayList<>();
for (int i = 0; i <jsonArray.length() ; i++) {
JSONObject postItem = jsonArray.getJSONObject(i);
Post post = new Post();
post.setTitle(postItem.getJSONObject("title").getString("rendered"));
post.setContent(postItem.getJSONObject("excerpt").getString("rendered"));
post.setImgURl(
postItem.getJSONObject("_embedded")
.getJSONArray("wp:featuredmedia")
.getJSONObject(0)
.getJSONObject("media_details")
.getJSONObject("sizes")
.getJSONObject("thumbnail")
.getString("source_url")
);
post.setIdPost(postItem.getInt("id"));
posts.add(post);
}
RecyclerView recyclerView= findViewById(R.id.wrapperPostList);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,RecyclerView.VERTICAL,false));
recyclerView.setAdapter(new PostListAdapter(posts));
Log.i(TAG, "onResponse: "+response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
fragmentTransaction.remove(new progressFragment());
ConstraintLayout progress = findViewById(R.id.conteinerProgress);
progress.removeAllViews();
Log.e(TAG, "onErrorResponse: "+error.toString());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
ممنونم از وقتی که برای پاسخ به این سوال میذارید...