我一直在做自定义ListView,当我点击ListView上的某个元素时,我想打开另一个类。
所以我启动了一个Adapter,class,activity及其.xml文件。
类别:
public class DatosMercado {
protected Drawable foto;
protected String titulo;
protected String info;
protected long id;
public DatosMercado(Drawable foto, String titulo, String info){
this.foto = foto;
this.titulo = titulo;
this.info = info;
}
public Drawable getFoto(){
return foto;
}
public void setFoto(Drawable foto){
this.foto = foto;
}
public String getTitulo(){
return titulo;
}
public void setTitulo(String titulo){
this.titulo = titulo;
}
public String getInfo(){
return info;
}
public void setInfo(String info){
this.info = info;
}
public long getId(){
return id;
}
public void setId(long id){
this.id = id;
}
}
适配器:
public class AdapterDatosMercado extends BaseAdapter {
protected Activity activity;
//Asignamos la clase DatosMercado al arrayadapter
protected ArrayList<DatosMercado> items;
//Metodo constructor de la clase
public AdapterDatosMercado(Activity activity, ArrayList<DatosMercado> items){
this.activity = activity;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return items.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
//Asociar el Layout de la lista que hemos creado
if(convertView == null){
LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inf.inflate(R.layout.mercado2, null);
}
//Creamos un objeto de la clase DatosMercado
DatosMercado datos = items.get(position);
//Relleno la foto
ImageView foto = (ImageView) v.findViewById(R.id.Photo);
foto.setImageDrawable(datos.getFoto());
//Rellenamos el nombre
TextView titulo = (TextView) v.findViewById(R.id.Title);
titulo.setText(datos.getTitulo());
//Rellenamos la informacion
TextView info = (TextView) v.findViewById(R.id.Description);
info.setText(datos.getInfo());
//retornamos la vista
return v;
}
}
我在活动上遇到问题,如果我在错误中说明该代码:
无法启动活动ComponentInfo {edu.upc.com.game/edu.upc.com.game.Mercado}:java.lang.RuntimeException:您的内容必须具有一个ListView,其id属性为'android.R.id .LIST'
这是我的代码:
public class Mercado extends ListActivity {
String classnames[] = {"BuscarColtan"};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mercado);
ListView lista = (ListView) findViewById(R.id.listamoviles);
ArrayList<DatosMercado> arraydatos = new ArrayList<DatosMercado>();
DatosMercado datos;
//Datos introducidos
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "IPear", "La mejor marca del mundo");
arraydatos.add(datos);
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "Bensung", "Moviles Star de alta gama");
arraydatos.add(datos);
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "HiYou", "Venimos desde China a dar el salto al mercado europeo");
arraydatos.add(datos);
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "IQ", "Moviles de alta tecnologia a bajo coste");
arraydatos.add(datos);
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "Zonya", "No te resistiras a comprar nuestros Hesperia");
arraydatos.add(datos);
datos = new DatosMercado(getResources().getDrawable(R.drawable.ipear), "Hullaguey", "Los mobiles mas baratos");
arraydatos.add(datos);
//Crear el Adapter personalizado
AdapterDatosMercado adapter = new AdapterDatosMercado(this,arraydatos);
//Aplicarlo
lista.setAdapter(adapter);
}
protected void onListItemClick(ListView lv, View v, int position, long id){
super.onListItemClick(lv,v,position,id);
String openClass = classnames[position];
try {
Class selected = Class.forName("edu.upc.com.game. "+ openClass);
Intent selectedIntent = new Intent(this,selected);
startActivity(selectedIntent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
ListView的原始名称是:
android:id="@+id/listamoviles"
我把它改为:
android:id="@android:id/list"
但是现在我遇到了这条线的问题:
ListView lista = (ListView) findViewById(R.id.listamoviles);
我必须定义列表视图原因,如果我不这样做它不起作用。如果我删除onListItemClick并将ListActivity更改为Activity但是我想通过单击自定义列表视图打开另一个活动(类),该应用程序将起作用。
非常感谢!
答案 0 :(得分:0)
如果延长// Route::any : it means that it will allow all method like get,post,put,patch...
Route::any('/send', function()
{
return Mail::send('email.send', ['name' => 'Its me'], function($message)
{
$name = "Name";
$message->from('no-reply@xxxxx.com',$name);
$message->to('kroy.webxpert@gmail.com')->subject('Test Mail');
});
});
然后删除此行
ListActivity
也替换
ListView lista = (ListView) findViewById(R.id.listamoviles);
通过
lista.setAdapter(adapter);