Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android光标仅显示数组的第一项_Android_Cursor_Android Arrayadapter_Android Cursor - Fatal编程技术网

Android光标仅显示数组的第一项

Android光标仅显示数组的第一项,android,cursor,android-arrayadapter,android-cursor,Android,Cursor,Android Arrayadapter,Android Cursor,我找不到为什么我的列表没有打印所有项目,它只打印第一个项目,我检查了我的数据库,那里有三个项目,但我的日志是这样说的: 10-03 14:46:07.116 833-833/br.com. I/System.out﹕ Q2: SELECT * FROM enderecos WHERE enderecos_id = 3 10-03 14:46:07.117 833-833/br.com. I/System.out﹕ END: Rua ujhuo 10-03 14:46:07.1

我找不到为什么我的列表没有打印所有项目,它只打印第一个项目,我检查了我的数据库,那里有三个项目,但我的日志是这样说的:

10-03 14:46:07.116      833-833/br.com. I/System.out﹕ Q2: SELECT * FROM enderecos WHERE enderecos_id = 3
10-03 14:46:07.117      833-833/br.com. I/System.out﹕ END: Rua ujhuo
10-03 14:46:07.124      833-833/br.com. I/System.out﹕ Q2: SELECT * FROM telefones WHERE telefones_id = 5
10-03 14:46:07.125      833-833/br.com. I/System.out﹕ LIsta De TELEFone [br.com.database.models.TelefoneModel@422e8d58]
TelefoneModel@422e8d58-这是第一个,其他的没有显示

功能:

   public List<TelefoneModel> getTelefonesDoCliente(Integer clientes_id) throws SQLException {

        String query1 = "SELECT * FROM " + tabelaCLIENTES_HAS_TELEFONES + " WHERE " + ClienteHasTelefoneModel.Coluna.CLIENTES_ID + " = " + clientes_id;
        Cursor mCursor1 = bd.rawQuery(query1, null);

        List<TelefoneModel> listaDeRegistros = new ArrayList<TelefoneModel>();

        if (mCursor1.getCount() > 0) {

            if (mCursor1.moveToFirst()) {
                do {



                    Integer TelefoneId = mCursor1.getInt(mCursor1.getColumnIndexOrThrow("telefones_id"));

                    String query = "SELECT * FROM " + tabelaTELEFONES + " WHERE " + TelefoneModel.Coluna.TELEFONES_ID + " = " + TelefoneId;
                    System.out.println("Q2: " + query);

                    Cursor mCursor2 = bd.rawQuery(query, null);


                    try {

                        if (mCursor2.getCount() > 0) {

                            if (mCursor2.moveToFirst()) {
                                do {

                                    TelefoneModel mTelefoneModel = new TelefoneModel();

                                    mTelefoneModel.setTelefones_id(mCursor2.getInt(mCursor2.getColumnIndex(TelefoneModel.Coluna.TELEFONES_ID)));
                                    mTelefoneModel.setId_rm(mCursor2.getInt(mCursor2.getColumnIndex(TelefoneModel.Coluna.ID_RM)));
                                    mTelefoneModel.setNumero(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.NUMERO)));
                                    mTelefoneModel.setTipo(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.TIPO)));
                                    mTelefoneModel.set_criado(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna._CRIADO)));
                                    mTelefoneModel.set_modificado(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna._MODIFICADO)));
                                    mTelefoneModel.set_status(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna._STATUS)));


                                    listaDeRegistros.add(mTelefoneModel);

                                    System.out.println("TELEFONES AQUI " + mTelefoneModel);

                                } while (mCursor2.moveToNext());

                            }

                        }

                        return listaDeRegistros;

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }while (mCursor1.moveToNext());

            }
        }

        return null;
    }
public List getTelefonesDoCliente(整数客户机\u id)抛出SQLException{
字符串query1=“SELECT*FROM”+tabelaCLIENTES\u HAS\u TELEFONES+“其中”+clienthestlefonemodel.Coluna.CLIENTES\u ID+“=”+clients\u ID;
游标mCursor1=bd.rawQuery(query1,null);
List listaDeRegistros=new ArrayList();
如果(mCursor1.getCount()>0){
if(mCursor1.moveToFirst()){
做{
整数TelefoneId=mCursor1.getInt(mCursor1.getColumnIndexOrThrow(“telefones_id”);
String query=“SELECT*FROM”+tabelaTELEFONES+,其中“+TelefoneModel.Coluna.TELEFONES_ID+”=“+TelefoneId;
System.out.println(“Q2:+查询”);
游标mCursor2=bd.rawQuery(查询,空);
试一试{
如果(mCursor2.getCount()>0){
if(mCursor2.moveToFirst()){
做{
TelefoneModel mTelefoneModel=新TelefoneModel();
mTelefoneModel.setTelefones_id(mCursor2.getInt(mCursor2.getColumnIndex(TelefoneModel.Coluna.TELEFONES_id));
mTelefoneModel.setId_rm(mCursor2.getInt(mCursor2.getColumnIndex(TelefoneModel.Coluna.ID_rm));
mTelefoneModel.setNumero(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.NUMERO));
mTelefoneModel.setTipo(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.TIPO));
mTelefoneModel.set_criado(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.u criado));
mTelefoneModel.set_modificado(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.u modificado));
mTelefoneModel.set_status(mCursor2.getString(mCursor2.getColumnIndex(TelefoneModel.Coluna.u status));
添加(mTelefoneModel);
System.out.println(“TELEFONES AQUI”+mTelefoneModel);
}while(mCursor2.moveToNext());
}
}
返回ListaderRegistros;
}捕获(例外e){
e、 printStackTrace();
}
}while(mCursor1.moveToNext());
}
}
返回null;
}
适配器:

公共类TelefoneViewAdapter扩展BaseAdapter{

private ClienteDetalheActivity detalhe;

private List<TelefoneModel> tele;
private static LayoutInflater inflater=null;

public TelefoneViewAdapter(Context context, ClienteDetalheActivity clienteDetalhe, List<TelefoneModel> telefone) {
    this.inflater = LayoutInflater.from( context );
    this.tele = telefone;

    detalhe = clienteDetalhe;



}



public int getCount() {

    return tele.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {

    View vi=convertView;
    ViewHolder holder;
    if(convertView == null){
        vi = inflater.inflate(R.layout.fragment_cliente_detalhe, null);
        holder=new ViewHolder();
        holder.id = (TextView)vi.findViewById(R.id.enderecoId);
        holder.numero = (TextView)vi.findViewById(R.id.telefone);


        vi.setTag(holder);
    }else{
        holder = (ViewHolder)vi.getTag();
    }

    TelefoneModel item = new TelefoneModel();
    item = tele.get(position);

    holder.id.setText(String.valueOf(item.getTelefones_id()));
    holder.numero.setText(item.getNumero());


    return vi;
}


public class ViewHolder
{
    TextView id;
    TextView numero;


}
私人客户活动详情;
私人名单电话;
专用静态充气机=空;
公共电话设备适配器(上下文上下文、客户活动客户活动、列表电话设备){
this.inflater=layoutiner.from(上下文);
this.tele=telefone;
detalhe=客户detalhe;
}
public int getCount(){
返回tele.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
视窗座;
if(convertView==null){
vi=充气机。充气(R.layout.fragment\u cliente\u detalhe,空);
holder=新的ViewHolder();
holder.id=(TextView)vi.findViewById(R.id.enderecoId);
holder.numero=(TextView)vi.findViewById(R.id.telefone);
vi.setTag(支架);
}否则{
holder=(ViewHolder)vi.getTag();
}
TelefoneModel项=新的TelefoneModel();
项目=远程获取(位置);
holder.id.setText(String.valueOf(item.getTelefones_id());
holder.numero.setText(item.getNumero());
返回vi;
}
公共类视图持有者
{
文本视图id;
文本视图编号;
}

}

您正在打印一个包含多个对象的对象

据我所见,你正试图打印一份电话列表。但是请记住,您不能只打印
list.toString()
,因为这样只会打印一项。清单本身。如果你想打印所有的手机,你必须迭代列表并逐个打印它的容器。您可以通过对每个

for(TelefoneModel phone : listaDeRegistros)
    System.out.println("Phone " + phone);
替换此行的
System.out.println
,它将迭代列表中的所有电话并打印它们

编辑


还要记住,您的代码只使用了
mCursor1
的第一个元素。如果此操作返回多个对象,并且您也希望为该光标获取手机,则必须对该光标执行
do/while
,就像对手机执行的操作一样。否则,您的代码如下->"获取id=3的所有地址->获取地址中第一个项目id的所有电话。

你能显示打印的代码吗?@CChi我已经编辑了这个问题,你能把日志放到while循环中,看看是否循环了不止一次。我真的看不到你循环列表并逐个打印项目的代码一个是电话列表。不仅仅是“一个”电话“谢谢你的帮助佩德罗,我也照你说的做了,结果还是一样的,看:
10-03 16:02:46.229 15894-15894/br.com.I/System.out﹕ 电话br.com.database.models。TelefoneModel@422e42b8
好的,佩德罗,我已经在mCursor1中添加了
do/while
,但结果仍然相同……从
do/while
中删除
列表中的ListaderRegistros=new ArrayList();
,然后将其放在外部。否则,您将无法使用它