0

我的自定义适配器有一个奇怪的问题......它只打印前两个元素(我的列表视图的前 2 个文本视图)。相同的代码适用于没有 Listview 的简单文本视图。我不明白我做错了什么

自定义适配器

public class CustomAdapter extends ArrayAdapter<Avviso> {
    Context context; 

    public CustomAdapter(Context context, int textViewResourceId, List<Avviso> objects) {
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getViewOptimize(position, convertView, parent);
    }

    public View getViewOptimize(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.rowcustom, null);
        viewHolder = new ViewHolder();
        viewHolder.testoavviso = (TextView)convertView.findViewById(R.id.textViewtitolo);
        convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        Avviso avviso = getItem(position);
        viewHolder.testoavviso.setText(avviso.getTestoavviso());
        return convertView;
    }

    private class ViewHolder {
        public TextView testoavviso;
    }
}

avvisi.java

public class Avvisi extends Activity {
    // blog url
    static final String BLOG_URL = "http://www.miosito.com"
    ListView listView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // set layout view
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_avvisi);

        try {
            getlink task = new getlink();
            task.execute("Process started!");

            //la stringa verra passata al metodo doInBackground del nostro AsyncTask
            //per controllare lo stato del task, possiamo chiamare task.getStatus()

        } catch (Exception ex) {
            ((TextView)findViewById(R.id.avviso1)).setText("Error");
        }
    }

    private class getlink extends AsyncTask<String, String, List<Avviso>> {
        // I tre tipi da dichiarare sono relativamente (in questo caso usiamo solo stringhe)
        // il parametro in entrata di doInBackground  (quando chiamiamo execute passiamo una stringa)
        // il paramentro in entrata di onProgressUpdate (dati che vogliamo mostrare all' utente -opzionale,potremmo usare variabili globali-)
        // il parametro in entrata di onPostExecure (una volta finito il task, potremmo voler mostrare un risultato all'utente)
        // nel caso non volessimo usare parametri di alcun genere tipizziamo con Void,Void,Void (passeremo poi dei null come parametri)
        ListView listView = (ListView)findViewById(R.id.listavvisi);
        List<Avviso> avvisi = new LinkedList<Avviso>();

        @Override
        protected List<Avviso> doInBackground(String... arg) {

            // stringa passata a onProgressUpdate
            String result = "";
            Document doc = null;

            try {
                doc = Jsoup.connect(BLOG_URL).get();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Elements links = doc.select("td.AVVISI-FORMAT-DEFAULT > a[href]");
            int j=0;
            int numavvisi = links.size();
            for (Element link : links) {
                if((j %2!=0) && (j<60)) {
                    String testonews = link.text();
                    String urlavviso= link.attr("abs:href");
                    int lunghezzanews = testonews.length();

                    if(lunghezzanews<80) {
                        avvisi.add(new Avviso(testonews));
                    } else {
                        avvisi.add(new Avviso(testonews.substring(0,80)));
                    }
                } else {
                    j++;
                }
            }                    
            return avvisi;
        }


        @Override
        protected void onProgressUpdate(final String... values){

        } 

        protected void onPostExecute(List<Avviso> avvisi) {
            CustomAdapter adapter = new CustomAdapter(Avvisi.this, R.layout.rowcustom, avvisi);
            listView.setAdapter(adapter);
        }
    }
}      
4

1 回答 1

0

滚动条有问题。我删除了它,现在代码可以正常工作

于 2013-01-05T12:22:08.640 回答