当我点击列表视图中的项目时,为什么我的列表视图没有将我返回到我的detailactivity.class? [英] Why is my listview not returning me to my detailactivity.class when I'm clicking an item on my listview?

查看:92
本文介绍了当我点击列表视图中的项目时,为什么我的列表视图没有将我返回到我的detailactivity.class?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的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>产品列表;
private ListView lvProduct;

@ Override
protected void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
工具栏工具栏=(工具栏)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);



ImageLoader.getInstance()。init(UILConfig.config(HomeActivity。 this )); // 在应用程序启动时执行

PostResponseAsyncTask taskRead = new PostResponseAsyncTask(HomeActivity。 this this );
taskRead.execute( http://10.0.2.2/carkila/product.php);


}

@覆盖
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>(){
@覆盖
public 字符串 getStringValue(产品项目,< span class =code-keyword> int position){
return item.img;
}
} , new DynamicImageLoader(){
@ Override
public void loadImage( String url,ImageView imageView){

ImageLoader.getInstance()。displayImage(url,imageView); // 将使用默认选项
}
});
dict.addStringField(R.id.tvCarModel, new StringExtractor< Product>(){
@Override
public String getStringValue(Product item, int position){
return 汽车模型: + item.Car_Model;
}
});
dict.addStringField(R.id.tvCarType, new StringExtractor< Product>(){
@Override
public String getStringValue(Product item, int position){
return 汽车类型: + item.Car_Type;
}
});
dict.addStringField(R.id.tvCapacity, new StringExtractor< Product>(){
@Override
public String getStringValue(Product item, int position){
return 容量: + 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 );
}

@覆盖
public void onItemClick(AdapterView<?> parent,View view, int position, long id){
Product selectedProduct = productList.get(position);
Intent in = new Intent(HomeActivity。 this ,DetailActivity。);
in.putExtra( product,(Serializable)selectedProduct);
startActivity(in);
}
}





DetailActivity

< pre lang =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);
工具栏工具栏=(工具栏)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab =(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener( new View.OnClickListener(){
@ Override
public void onClick(查看视图){
Snackbar.make(view,< span class =code-string> 替换为您自己的操作,Snackbar.LENGTH_LONG)
.setAction( Action,null).show();
}
});
getSupportActionBar()。setDisplayHomeAsUpEnabled(true);
ImageLoader.getInstance()。init(UILConfig.config(DetailActivity。 this ));

产品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);
}
}

}





产品类



  package  com.example.kun.carcarkila; 

import com.google.gson.annotations.SerializedName;

public class 产品{

@ 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 容量;
@ SerializedName img
public String img;
}





我的尝试:



我已经尝试过在Home Activity上尝试catch并且出现此错误

`产品无法转换为java.io.Serializable`

解决方案

使用以下代码进行详细活动:





  @覆盖 
受保护 void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
工具栏工具栏=(工具栏)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(查看视图){
Snackbar.make(view,< span class =code-string> 替换为您自己的操作,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 (例外e)
{
System.out.println( 详细信息错误 + e.toString());
}
}


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

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

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

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`

解决方案

Use below code for detail activity:


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


这篇关于当我点击列表视图中的项目时,为什么我的列表视图没有将我返回到我的detailactivity.class?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆