2013-04-15 4 views
0

У меня проблема в отображении пользовательского списка я проверил массив, и он не был нулевым, но до сих пор в списке не отображается: классандроида пользовательского списка не отображается

адаптера:

public class ReportAdapter extends BaseAdapter{ 


private Context context; 
Report data[] = null; 


public ReportAdapter(Context context, Report[] d) { 
    data = d; 
    this.context = context; 
} 



@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row=convertView; 

    if(convertView == null){ 
     LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
     row = inf.inflate(R.layout.list_row, null); 
    } 


     ImageView imageUrl = (ImageView)row.findViewById(R.id.imageUrl); 
     TextView reportName = (TextView)row.findViewById(R.id.reportName); 
     TextView reportState = (TextView)row.findViewById(R.id.reportState); 
     TextView reportTime = (TextView)row.findViewById(R.id.reportTime); 


    //Report report = data[position]; 

    imageUrl.setImageDrawable(data[position].Image); 
    reportName.setText(data[position].Name); 
    reportState.setText(data[position].State); 
    reportTime.setText(data[position].Time); 

    return row; 
} 


@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 



@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 



@Override 
public long getItemId(int arg0) { 
    // TODO Auto-generated method stub 
    return 0; 
} 
} 

Доклад класс:

public class Report { 
public String Name; 
public String Time; 
public Drawable Image; 
public String State; 
public Report(){ 
    super(); 
} 

public Report(String Name, String Time,Drawable Image,String State) { 
    super(); 
    this.Name = Name; 
    this.Time = Time; 
    this.Image = Image; 
    this.State = State; 
} 

}

Основной класс:

Report report_data[] = new Report[reports.length()]; 
//start loop 
report_data[i] = new Report(c.getString(TAG_TITLE),c.getString(TAG_TIME),drawable,"Pidding"); 
// end loop 
list = (ListView)findViewById(R.id.list); 
ReportAdapter adapter = new ReportAdapter(Display_Reports.this,report_data); 
list.setAdapter(adapter); 

Я уверен, что код правильный, но есть небольшая ошибка, которую я еще не нашел. и спасибо.

+1

Верните размер массива из 'geCount()'. – Luksprog

+0

Спасибо, что сейчас работает – Taha

ответ

1

ли это:

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return data.length; 
} 



@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return data[position]; 
} 



@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

Также попробуйте использовать эффективные методы, как ListView View Holder шаблона.

3

В вашем адаптере, в getCount() вы return 0. Вы должны вернуть размер своего списка.

0

Попробуйте

Report report_data[] = new Report[reports.length()]; 
report_data[i] = new Report(c.getString(TAG_TITLE),c.getString(TAG_TIME),drawable,"Pidding"); 
list = (ListView)findViewById(R.id.list); 
ReportAdapter adapter = new ReportAdapter(Display_Reports.this,report_data); 
list.setAdapter(adapter); 
adapter.clear(); 

adapter.addAll(report_data[]); //if API >= 11 

for(int i=0; i<report_data.length, i++) //else)) 
{adapter.add(report_data[i]);} 
adapter.notifyDataSetChanged();