Jayzon Jorge Alcancia Ответов: 1

Почему мой 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

1 Ответов

Рейтинг:
1

Sangeet Das

Используйте приведенный ниже код для детальной деятельности:


@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());
       }
   }