2012-03-02 3 views
0

개체, 구체적으로 고객에 대한 정보를 표시하려고합니다. 나는 이름, 성, 전화 번호, 주소 등을 의미합니다. 그것은 내 데이터베이스에 대한 쿼리 결과입니다.개체에 포함 된 정보를 ListView에 표시합니다.

이 속성을 ListView에 표시하려고합니다. ListView가 기본적으로 자체 포함되어 있기 때문에 내 활동이 ListActivity를 상속하는 경우에 더 좋습니다.

나는 다음 작업을 수행한다. 하나의 레코드 (고객) 만 반환하고이 객체를 전달하는 방법을 모르는 쿼리 (Cursor)로 모든 정보를 저장하는 Customer 클래스가 있는데, 찾을 수 없다. 가장 적절한 어댑터.

이 방법으로이 작업을 수행 할 수 있습니까? 아니면이 개체를 모든 정보가 포함 된 ArrayList로 변환해야하며 실제로 어댑터에 ArrayAdapter를 사용해야합니까?

누구나이 방법을 알고 있습니까 ??

감사합니다. 당신이 커서 당신이 여기이

String[] from = new String[]{"FirstName"}; 
int[] to = new int[]{R.id.row}; 

SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.row_item, cur, from, to); 
setListAdapter(sca); 

확인 SimpleCursorAdapter에 대한 설명서 같은 것을해야 쿼리하면

+0

첫 번째 아이디어는 커서를 개체, 개체 Customer에 반환하는 레코드의 정보를 저장하는 것이 었습니다. 모든 정보가 들어있는 ArrayList 으로 변환해야한다고 생각합니다. – danigonlinea

+0

ArrayList 이것을 사용할 수 있습니다 .......... –

+0

한 고객의 정보를 표시하고 싶습니다. 오직 한 고객입니다. 내 말은, 화면에서 이름 : name_custormer, 성 : lastname_customer, .... 등 ... ListView의 각 행에서이 작업을 수행합니다. 그러나이 작업을 수행하는 방법을 모르겠습니다 ... 죄송합니다. 신병. – danigonlinea

답변

2

. 당신이 당신의 전망을 더 복잡한 일을해야 할 경우 사용자 정의 커서 어댑터를 구현해야합니다 :

public class ExampleCursorAdapter extends CursorAdapter { 
    public ExampleCursorAdapter(Context context, Cursor c) { 
     super(context, c); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     TextView summary = (TextView)view.findViewById(R.id.summary); 
     summary.setText(cursor.getString(
       cursor.getColumnIndex(ExampleDB.KEY_EXAMPLE_SUMMARY))); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     LayoutInflater inflater = LayoutInflater.from(context); 
     View v = inflater.inflate(R.layout.item, parent, false); 
     bindView(v, context, cursor); 
     return v; 
    } 
} 
+0

답변 해 주셔서 감사합니다. 내 솔루션이 될 수 있습니다. 그러나 나는 한 가지 질문을 할 것이다. 나는이 방법으로 화면을 보지 못했다. ... 1row : 이름 : pepe - 2row : 성 : martínez - 3 행 전화 : 6000005555 ... 그리고 이런 방식으로 데이터를 보여줘. 해야 할 것? – danigonlinea

0

을 그리고 마지막으로, 나는 그것이 될 것이다 솔루션을 찾을 수 있습니다. 내가 어떻게했는지 말해 줄께.

나는이 방법으로 정보 고객을 표시하고 싶었 :

  1. 행 1> 이름 : NAME_VALUE
  2. 행 2> 성 :
  3. lastname_value 행 3> 전화 : phone_value 합니다. ..

N. n 개의 행 -> n_field : n_value

필드 설명하는 어떤 브이 "이름 :", "성 :", "전화 번호 :", ...을 의미합니다. 나는 문자열 배열에이 모든 값을 넣었습니다. 나는 문자열 []에 의해 그것을 붙 잡았다.

값은 올바른 필드 옆에 적절한 값을 표시하십시오.

이 활동 ListActivity, 기본적으로 ListView에을 상속 : 나는 ArrayList를 안에이 모든 것을 넣고 옆에만 적절한 어댑터를 작성해야합니다. 우리가이 어댑터의 인수로 커서를 통과해야하지만 내 커서 만 단 한 결과, 하나 개의 레코드 만를 반환하기 때문에

SimpleCursorAdapter 적절한 없습니다.

동일한 이유로 커서 어댑터이 거부됩니다. 다음에 무엇을 할 수 있습니까?ArrayAdapter는 :

public class DetalleClienteAdapter extends ArrayAdapter<String> 
{ 
    private String[] campos_cliente; 
    private ArrayList<String> detalles_cliente; 


    public DetalleClienteAdapter(Context contexto, int layout, ArrayList<String> detalles) 
    { 
     super(contexto,layout,detalles); 
     //mInflater = LayoutInflater.from(contexto); 

     // LOS VALORES DE LOS CAMPOS: 
     detalles_cliente = detalles; 

     // CAMPOS DE DETALLES: nombre, apellidos, etc... 
     android.content.res.Resources res = getResources(); 
     campos_cliente = res.getStringArray(R.array.array_detalle_cliente); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     // TODO Auto-generated method stub 
     //return super.getView(position, convertView, parent); 
     LayoutInflater inflater= getLayoutInflater(); 
     View fila = inflater.inflate(R.layout.detalles_cliente, parent, false); 

     TextView campo =(TextView)fila.findViewById(R.id.detalles_campo); 
     TextView valor =(TextView)fila.findViewById(R.id.detalles_valor); 

     campo.setText(campos_cliente[position]); 
     valor.setText(detalles_cliente.get(position)); 

     return fila; 

    } 

} 

는 지금은 ViewHolder으로보다 효율적인 어댑터를 쓸거야. 그것에 대한 당신의 의견은 무엇입니까?

감사합니다.

관련 문제