Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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_Android Asynctask_Custom Adapter - Fatal编程技术网

Android 为什么只打印列表视图的两个文本视图?

Android 为什么只打印列表视图的两个文本视图?,android,android-asynctask,custom-adapter,Android,Android Asynctask,Custom Adapter,我有一个自定义适配器奇怪的问题。。。它只打印前两个元素(我的listview的前两个textview)。同样的代码适用于没有Listview的简单文本视图。我不明白我做错了什么 自定义适配器 public class CustomAdapter extends ArrayAdapter<Avviso> { Context context; public CustomAdapter(Context context, int textViewResourceId, L

我有一个自定义适配器奇怪的问题。。。它只打印前两个元素(我的listview的前两个textview)。同样的代码适用于没有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;
    }
}
公共类CustomAdapter扩展了ArrayAdapter{
语境;
公共CustomAdapter(上下文上下文、int textViewResourceId、列表对象){
超级(上下文、textViewResourceId、对象);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getViewOptimize(位置、转换视图、父级);
}
公共视图getViewOptimize(int位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
convertView=充气机。充气(R.layout.rowcustom,null);
viewHolder=新的viewHolder();
viewHolder.testoavviso=(TextView)convertView.findViewById(R.id.textViewtitolo);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
Avviso Avviso=获取项目(位置);
viewHolder.testoavviso.setText(avviso.getestoavviso());
返回视图;
}
私有类视窗持有者{
公共文本视图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);
        }
    }
}      
公共类Avvisi扩展活动{
//博客网址
静态最终字符串BLOG_URL=”http://www.miosito.com"
列表视图列表视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
//设置布局视图
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_avvisi);
试一试{
getlink任务=新建getlink();
task.execute(“进程已启动!”);
//拉斯特林加帕萨塔酒店
//根据Controllere lo stato del task、possiamo chiamare task.getStatus()命令
}捕获(例外情况除外){
((TextView)findViewById(R.id.avviso1)).setText(“错误”);
}
}
私有类getlink扩展了异步任务{
//我是一个相对主义者(在《卡索·乌西亚莫独奏曲》中)
//背景中的il参数(quando chiamiamo execute passiamo una stringa)
//进度更新中的参数(所有“副官”都是全球变量)
//在执行后的夹带中的参数
//非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性参数
ListView ListView=(ListView)findViewById(R.id.listavvisi);
List avvisi=new LinkedList();
@凌驾
受保护列表doInBackground(字符串…arg){
//stringa passata a onProgressUpdate
字符串结果=”;
单据单据=空;
试一试{
doc=Jsoup.connect(BLOG_URL.get();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Elements links=doc.select(“td.AVVISI-FORMAT-DEFAULT>a[href]”;
int j=0;
int numavvisi=links.size();
用于(元素链接:链接){

如果((j%2!=0)&&(j滚动条有问题。我删除了它,现在代码在
onPostExecute()
中运行良好
avvisi
的大小是多少?我怎么能看到?使用avvisi.size()?我打印了该值,结果是12。所以适配器中有问题……我想