Почему мой listview не возвращает меня в мой detailactivity.class когда я нажимаю на элемент в своем listview?
У меня возникли проблемы с моим ListView. Он всегда отправляет меня обратно на страницу входа в систему, когда я нажимаю на какой-то пункт в списке. Он должен был перейти на страницу подробностей.
Домашняя Деятельность
package com.example.kun.carcarkila; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import com.amigold.fundapter.BindDictionary; import com.amigold.fundapter.FunDapter; import com.amigold.fundapter.extractors.StringExtractor; import com.amigold.fundapter.interfaces.DynamicImageLoader; import com.kosalgeek.android.json.JsonConverter; import com.kosalgeek.genasync12.AsyncResponse; import com.kosalgeek.genasync12.PostResponseAsyncTask; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.Serializable; import java.util.ArrayList; public class HomeActivity extends AppCompatActivity implements AsyncResponse, AdapterView.OnItemClickListener { final String LOG = "HomeActivity"; private ArrayList<Product> productList; private ListView lvProduct; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ImageLoader.getInstance().init(UILConfig.config(HomeActivity.this)); // Do it on Application start PostResponseAsyncTask taskRead = new PostResponseAsyncTask(HomeActivity.this, this); taskRead.execute("http://10.0.2.2/carkila/product.php"); } @Override public void processFinish(String s) { productList = new JsonConverter<Product>().toArrayList(s, Product.class); BindDictionary<Product> dict = new BindDictionary<Product>(); dict.addDynamicImageField(R.id.ivImg, new StringExtractor<Product>() { @Override public String getStringValue(Product item, int position) { return item.img; } }, new DynamicImageLoader() { @Override public void loadImage(String url, ImageView imageView) { ImageLoader.getInstance().displayImage(url, imageView); // Default options will be used } }); dict.addStringField(R.id.tvCarModel, new StringExtractor<Product>() { @Override public String getStringValue(Product item, int position) { return "Car Model: " + item.Car_Model; } }); dict.addStringField(R.id.tvCarType, new StringExtractor<Product>() { @Override public String getStringValue(Product item, int position) { return "Car Type: " + item.Car_Type; } }); dict.addStringField(R.id.tvCapacity, new StringExtractor<Product>() { @Override public String getStringValue(Product item, int position) { return "Capacity: " + item.Capacity; } }); FunDapter<Product> adapter = new FunDapter<>( HomeActivity.this, productList, R.layout.layout_list, dict); lvProduct = (ListView)findViewById(R.id.lvProduct); lvProduct.setAdapter(adapter); lvProduct.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Product selectedProduct = productList.get(position); Intent in = new Intent(HomeActivity.this, DetailActivity.class); in.putExtra("product", (Serializable) selectedProduct); startActivity(in); } }
Детализация
package com.example.kun.carcarkila; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; public class DetailActivity extends AppCompatActivity { TextView tvCarModel, tvCarType, tvCapacity; ImageView ivImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ImageLoader.getInstance().init(UILConfig.config(DetailActivity.this)); Product product = (Product) getIntent().getSerializableExtra("product"); tvCarModel = (TextView)findViewById(R.id.tvCarModel); tvCarType = (TextView)findViewById(R.id.tvCarType); tvCapacity = (TextView)findViewById(R.id.tvCapacity); ivImage = (ImageView)findViewById(R.id.ivImage); if(product != null){ tvCarModel.setText(product.Car_Model); tvCarType.setText(product.Car_Type); tvCapacity.setText(product.Capacity); ImageLoader.getInstance().displayImage(product.img, ivImage); } } }
класс product
package com.example.kun.carcarkila; import com.google.gson.annotations.SerializedName; public class Product { @SerializedName("Car_No") public int Car_No; @SerializedName("Car_Model") public String Car_Model; @SerializedName("Car_Type") public String Car_Type; @SerializedName("Capacity") public int Capacity; @SerializedName("img") public String img; }
Что я уже пробовал:
Я уже пробовал попробовать поймать домашнюю активность и эта ошибка появляется
"Продукт не может быть приведен к java. io. Serializable`
priyanshbhaliya
используйте parcelable затем Serializable это легко реализовать и дает вам лучшую производительность чем Serializable