2016-10-09 3 views
0

사용자 지정 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 가 확장되면 문제가 난을 변경하는 경우 것입니다 때문에

답변

0

다음,도

setListAdapter(adapter); 
그것은 실패 유지
+0

에 의해

lista.setAdapter(adapter); 

을 대체이 선

ListView lista = (ListView) findViewById(R.id.listamoviles); 

을 제거 이름을 'android : id = "@ android : id/list"'줄 :'ListView lista = (ListView) findViewB yId (R.id.listamoviles);'그것은 작동하지 않으며 listamoviles의 이름을 변경해야하지만 이름을 넣거나 나열 할 수는 없습니다. –

+0

작동 여부 –

관련 문제