当我点击列表视图中的项目时,为什么我的列表视图没有将我返回到我的detailactivity.class? [英] Why is my listview not returning me to my detailactivity.class when I'm clicking an item on my 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>产品列表;
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屋!