Click here to Skip to main content
15,897,371 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am having trouble with my ListView. It always sends me back to my login page whenever I press an item on the list. It supposed to go to the details page.

Home Activity
Java
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);
    }
    }


DetailActivity
Java
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 Class

Java
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;
    }


What I have tried:

I've already tried try catch on the Home Activity and this error shows up
`Product cannot be cast to java.io.Serializable`
Posted
Updated 22-Jul-16 5:31am
Comments
priyanshbhaliya 12-Jul-16 0:59am    
use parcelable then Serializable it is easy to implement and gives you better performance then Serializable

1 solution

Use below code for detail activity:


Java
@Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_detail);
       Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
       setSupportActionBar(toolbar);

       tvCarModel = (TextView)findViewById(R.id.tvCarModel);
       tvCarType = (TextView)findViewById(R.id.tvCarType);
       tvCapacity = (TextView)findViewById(R.id.tvCapacity);
       ivImage = (ImageView)findViewById(R.id.ivImage);

       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));

       try {
             Product product = (Product) getIntent().getSerializableExtra("product");

              if(product != null)
              {
                   tvCarModel.setText(product.Car_Model);
                   tvCarType.setText(product.Car_Type);
                   tvCapacity.setText(product.Capacity);
                   ImageLoader.getInstance().displayImage(product.img, ivImage);
               }
       }
       catch(Exception e)
       {
           System.out.println("Error in details " + e.toString());
       }
   }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900