사용자 지정 ListView를 수행하고 있으며 ListView에서 일부 요소를 클릭하면 다른 클래스를 열려고합니다.사용자 지정 ListView를 사용하여 작업 시작 중 오류가 발생했습니다.
그래서 어댑터, 클래스, 활동 및 .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;
}
}
어댑터 : 그 코드를 exectue 경우
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 : 귀하의 컨텐츠에는 id 속성이 'android.R.id.list'인 ListView가 있어야합니다
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"
내가 그것을 변경 :
'여기 내 코드입니다 16,android:id="@android:id/list"
는하지만 지금은 그 라인에 문제가 :
ListView lista = (ListView) findViewById(R.id.listamoviles);
나는 그것이 작동하지 않는 것을하지 않으면 그 목록보기 원인을 정의해야합니다. onListItemClick을 삭제하고 Activity에 대한 ListActivity를 변경하면 응용 프로그램이 작동하지만 customed listview를 클릭하여 다른 활동 (클래스)을 열고 싶습니다.
고맙습니다. 당신이 ListActivity
가 확장되면 문제가 난을 변경하는 경우 것입니다 때문에
에 의해
을 대체이 선
을 제거 이름을 'android : id = "@ android : id/list"'줄 :'ListView lista = (ListView) findViewB yId (R.id.listamoviles);'그것은 작동하지 않으며 listamoviles의 이름을 변경해야하지만 이름을 넣거나 나열 할 수는 없습니다. –
작동 여부 –